{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Tce3stUlHN0L"
      },
      "source": [
        "##### Copyright 2025 Google LLC."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "tuOe1ymfHZPu"
      },
      "outputs": [],
      "source": [
        "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "#\n",
        "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "#     https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xPixuBZFck9b"
      },
      "source": [
        "# Clustering with embeddings\n",
        "\n",
        "<a target=\"_blank\" href=\"https://colab.research.google.com/github/google-gemini/cookbook/blob/main/examples/clustering_with_embeddings.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" height=30/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "025c6c81c576"
      },
      "source": [
        "<!-- Princing warning Badge -->\n",
        "<table>\n",
        "  <tr>\n",
        "    <!-- Emoji -->\n",
        "    <td bgcolor=\"#f5949e\">\n",
        "      <font size=30>⚠️</font>\n",
        "    </td>\n",
        "    <!-- Text Content Cell -->\n",
        "    <td bgcolor=\"#f5949e\">\n",
        "      <h3><font color=black>This notebook requires paid tier rate limits to run properly.<br>  \n",
        "(cf. <a href=\"https://ai.google.dev/pricing#veo2\"><font color='#217bfe'>pricing</font></a> for more details).</font></h3>\n",
        "    </td>\n",
        "  </tr>\n",
        "</table>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PMCPLbMYsljk"
      },
      "source": [
        "## Overview\n",
        "\n",
        "This tutorial demonstrates how to visualize and perform clustering with the embeddings from the Gemini API. You will visualize a subset of the 20 Newsgroup dataset using [t-SNE](https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html){:.external} and cluster that subset using the KMeans algorithm.\n",
        "\n",
        "For more information on getting started with embeddings generated from the Gemini API, check out the [Get Started](../quickstarts/Get_started.ipynb).\n",
        "\n",
        "## Prerequisites\n",
        "\n",
        "You can run this quickstart in Google Colab.\n",
        "\n",
        "To complete this quickstart on your own development environment, ensure that your envirmonement meets the following requirements:\n",
        "\n",
        "-  Python 3.11+\n",
        "-  An installation of `jupyter` to run the notebook.\n",
        "\n",
        "## Setup\n",
        "\n",
        "First, download and install the Gemini API Python library."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "id": "VYACbzJqseql"
      },
      "outputs": [],
      "source": [
        "!pip install -U -q google-genai"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "d7bEYfTFmvy9"
      },
      "outputs": [],
      "source": [
        "import re\n",
        "import tqdm\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns\n",
        "\n",
        "from google import genai\n",
        "from google.genai import types\n",
        "\n",
        "# Used to securely store your API key\n",
        "from google.colab import userdata\n",
        "\n",
        "from sklearn.datasets import fetch_20newsgroups\n",
        "from sklearn.manifold import TSNE\n",
        "from sklearn.cluster import KMeans\n",
        "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qEunxaDOHzfi"
      },
      "source": [
        "### Grab an API Key\n",
        "\n",
        "Before you can use the Gemini API, you must first obtain an API key. If you don't already have one, create a key with one click in Google AI Studio.\n",
        "\n",
        "<a class=\"button button-primary\" href=\"https://aistudio.google.com/app/apikey\" target=\"_blank\" rel=\"noopener noreferrer\">Get an API key</a>\n",
        "\n",
        "In Colab, add the key to the secrets manager under the \"🔑\" in the left panel. Give it the name `GEMINI_API_KEY`.\n",
        "\n",
        "Once you have the API key, pass it to the SDK. You can do this in two ways:\n",
        "\n",
        "* Put the key in the `GEMINI_API_KEY` environment variable (the SDK will automatically pick it up from there).\n",
        "* Pass the key to `genai.Client(api_key=...)`"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7CItpYF3uOEf"
      },
      "outputs": [],
      "source": [
        "# Or use `os.getenv('GEMINI_API_KEY')` to fetch an environment variable.\n",
        "GEMINI_API_KEY=userdata.get('GEMINI_API_KEY')\n",
        "\n",
        "client = genai.Client(api_key=GEMINI_API_KEY)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dJTxEH7RAOfq"
      },
      "source": [
        "Key Point: Next, you will choose a model. Any embedding model will work for this tutorial, but for real applications it's important to choose a specific model and stick with it. The outputs of different models are not compatible with each other.\n",
        "\n",
        "**Note**: At this time, the Gemini API is [only available in certain regions](https://ai.google.dev/gemini-api/docs/available-regions)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "id": "sLeRMa1bz9Ad"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "models/embedding-001\n",
            "models/text-embedding-004\n",
            "models/gemini-embedding-exp-03-07\n",
            "models/gemini-embedding-exp\n",
            "models/gemini-embedding-001\n"
          ]
        }
      ],
      "source": [
        "for m in client.models.list():\n",
        "  if 'embedContent' in m.supported_actions:\n",
        "    print(m.name)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "d6fa32bbaa20"
      },
      "source": [
        "### Select the model to be used"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "fc0698cc90e2"
      },
      "outputs": [],
      "source": [
        "MODEL_ID = \"gemini-embedding-001\" # @param [\"gemini-embedding-001\", \"text-embedding-004\"] {\"allow-input\":true, isTemplate: true}"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pnICLtwna2UU"
      },
      "source": [
        "## Dataset\n",
        "\n",
        "The [20 Newsgroups Text Dataset](https://scikit-learn.org/0.19/datasets/twenty_newsgroups.html){:.external} contains 18,000 newsgroups posts on 20 topics divided into training and test sets. The split between the training and test datasets are based on messages posted before and after a specific date. For this tutorial, you will be using the training subset."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "id": "7j4Y2198bdnm"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "['alt.atheism',\n",
              " 'comp.graphics',\n",
              " 'comp.os.ms-windows.misc',\n",
              " 'comp.sys.ibm.pc.hardware',\n",
              " 'comp.sys.mac.hardware',\n",
              " 'comp.windows.x',\n",
              " 'misc.forsale',\n",
              " 'rec.autos',\n",
              " 'rec.motorcycles',\n",
              " 'rec.sport.baseball',\n",
              " 'rec.sport.hockey',\n",
              " 'sci.crypt',\n",
              " 'sci.electronics',\n",
              " 'sci.med',\n",
              " 'sci.space',\n",
              " 'soc.religion.christian',\n",
              " 'talk.politics.guns',\n",
              " 'talk.politics.mideast',\n",
              " 'talk.politics.misc',\n",
              " 'talk.religion.misc']"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "newsgroups_train = fetch_20newsgroups(subset='train')\n",
        "\n",
        "# View list of class names for dataset\n",
        "newsgroups_train.target_names"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "k-XyGQsTcdSR"
      },
      "source": [
        "Here is the first example in the training set."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "id": "KDELgM0xbpkt"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Lines: 15\n",
            "\n",
            " I was wondering if anyone out there could enlighten me on this car I saw\n",
            "the other day. It was a 2-door sports car, looked to be from the late 60s/\n",
            "early 70s. It was called a Bricklin. The doors were really small. In addition,\n",
            "the front bumper was separate from the rest of the body. This is \n",
            "all I know. If anyone can tellme a model name, engine specs, years\n",
            "of production, where this car is made, history, or whatever info you\n",
            "have on this funky looking car, please e-mail.\n",
            "\n",
            "Thanks,\n",
            "- IL\n",
            "   ---- brought to you by your neighborhood Lerxst ----\n",
            "\n",
            "\n",
            "\n",
            "\n",
            "\n"
          ]
        }
      ],
      "source": [
        "idx = newsgroups_train.data[0].index('Lines')\n",
        "print(newsgroups_train.data[0][idx:])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "id": "G6ldbA4XfPpP"
      },
      "outputs": [],
      "source": [
        "# Apply functions to remove names, emails, and extraneous words from data points in newsgroups.data\n",
        "newsgroups_train.data = [re.sub(r'[\\w\\.-]+@[\\w\\.-]+', '', d) for d in newsgroups_train.data] # Remove email\n",
        "newsgroups_train.data = [re.sub(r\"\\([^()]*\\)\", \"\", d) for d in newsgroups_train.data] # Remove names\n",
        "newsgroups_train.data = [d.replace(\"From: \", \"\") for d in newsgroups_train.data] # Remove \"From: \"\n",
        "newsgroups_train.data = [d.replace(\"\\nSubject: \", \"\") for d in newsgroups_train.data] # Remove \"\\nSubject: \""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "id": "26qIj6fJccVI"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Text</th>\n",
              "      <th>Label</th>\n",
              "      <th>Class Name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>WHAT car is this!?\\nNntp-Posting-Host: rac3.w...</td>\n",
              "      <td>7</td>\n",
              "      <td>rec.autos</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>SI Clock Poll - Final Call\\nSummary: Final ca...</td>\n",
              "      <td>4</td>\n",
              "      <td>comp.sys.mac.hardware</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>PB questions...\\nOrganization: Purdue Univers...</td>\n",
              "      <td>4</td>\n",
              "      <td>comp.sys.mac.hardware</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Re: Weitek P9000 ?\\nOrganization: Harris Comp...</td>\n",
              "      <td>1</td>\n",
              "      <td>comp.graphics</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Re: Shuttle Launch Question\\nOrganization: Sm...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11309</th>\n",
              "      <td>Re: Migraines and scans\\nDistribution: world...</td>\n",
              "      <td>13</td>\n",
              "      <td>sci.med</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11310</th>\n",
              "      <td>Screen Death: Mac Plus/512\\nLines: 22\\nOrganiz...</td>\n",
              "      <td>4</td>\n",
              "      <td>comp.sys.mac.hardware</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11311</th>\n",
              "      <td>Mounting CPU Cooler in vertical case\\nOrganiz...</td>\n",
              "      <td>3</td>\n",
              "      <td>comp.sys.ibm.pc.hardware</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11312</th>\n",
              "      <td>Re: Sphere from 4 points?\\nOrganization: Cent...</td>\n",
              "      <td>1</td>\n",
              "      <td>comp.graphics</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11313</th>\n",
              "      <td>stolen CBR900RR\\nOrganization: California Ins...</td>\n",
              "      <td>8</td>\n",
              "      <td>rec.motorcycles</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>11141 rows × 3 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                    Text  Label  \\\n",
              "0       WHAT car is this!?\\nNntp-Posting-Host: rac3.w...      7   \n",
              "1       SI Clock Poll - Final Call\\nSummary: Final ca...      4   \n",
              "2       PB questions...\\nOrganization: Purdue Univers...      4   \n",
              "3       Re: Weitek P9000 ?\\nOrganization: Harris Comp...      1   \n",
              "4       Re: Shuttle Launch Question\\nOrganization: Sm...     14   \n",
              "...                                                  ...    ...   \n",
              "11309    Re: Migraines and scans\\nDistribution: world...     13   \n",
              "11310  Screen Death: Mac Plus/512\\nLines: 22\\nOrganiz...      4   \n",
              "11311   Mounting CPU Cooler in vertical case\\nOrganiz...      3   \n",
              "11312   Re: Sphere from 4 points?\\nOrganization: Cent...      1   \n",
              "11313   stolen CBR900RR\\nOrganization: California Ins...      8   \n",
              "\n",
              "                     Class Name  \n",
              "0                     rec.autos  \n",
              "1         comp.sys.mac.hardware  \n",
              "2         comp.sys.mac.hardware  \n",
              "3                 comp.graphics  \n",
              "4                     sci.space  \n",
              "...                         ...  \n",
              "11309                   sci.med  \n",
              "11310     comp.sys.mac.hardware  \n",
              "11311  comp.sys.ibm.pc.hardware  \n",
              "11312             comp.graphics  \n",
              "11313           rec.motorcycles  \n",
              "\n",
              "[11141 rows x 3 columns]"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Put training points into a dataframe\n",
        "df_train = pd.DataFrame(newsgroups_train.data, columns=['Text'])\n",
        "df_train['Label'] = newsgroups_train.target\n",
        "# Match label to target name index\n",
        "df_train['Class Name'] = df_train['Label'].map(newsgroups_train.target_names.__getitem__)\n",
        "# Retain text samples that can be used in the gecko model.\n",
        "df_train = df_train[df_train['Text'].str.len() < 10000]\n",
        "\n",
        "df_train"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sZnW2_Tx2_L1"
      },
      "source": [
        "Next, you will sample some of the data by taking 100 data points in the training dataset, and dropping a few of the categories to run through this tutorial. Choose the science categories to compare."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "id": "L5LWfJMY3Ii7"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/tmp/ipykernel_200977/406673449.py:4: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n",
            "  .apply(lambda x: x.sample(SAMPLE_SIZE))\n"
          ]
        },
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>index</th>\n",
              "      <th>Text</th>\n",
              "      <th>Label</th>\n",
              "      <th>Class Name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1650</td>\n",
              "      <td>(Stephan Neuhaus )Re: PGP 2.2: general commen...</td>\n",
              "      <td>11</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1651</td>\n",
              "      <td>Re: Off the shelf cheap DES keyseach machine ...</td>\n",
              "      <td>11</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1652</td>\n",
              "      <td>Re: text of White House announcement and Q&amp;As...</td>\n",
              "      <td>11</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1653</td>\n",
              "      <td>Need help !!\\nKeywords: Firewall gateway mode...</td>\n",
              "      <td>11</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1654</td>\n",
              "      <td>Re: text of White House announcement and Q&amp;As...</td>\n",
              "      <td>11</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>595</th>\n",
              "      <td>2245</td>\n",
              "      <td>Re: Space Station Redesign, JSC Alternative #...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>596</th>\n",
              "      <td>2246</td>\n",
              "      <td>Portuguese Launch Complex \\nOrganization: NAS...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>597</th>\n",
              "      <td>2247</td>\n",
              "      <td>Subject: &lt;None&gt;\\n\\nOrganization: University of...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>598</th>\n",
              "      <td>2248</td>\n",
              "      <td>Re: Vandalizing the sky.\\nNntp-Posting-Host: ...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>599</th>\n",
              "      <td>2249</td>\n",
              "      <td>Re: Crazy? or just Imaginitive?\\nOrganization...</td>\n",
              "      <td>14</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>600 rows × 4 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "     index                                               Text  Label  \\\n",
              "0     1650   (Stephan Neuhaus )Re: PGP 2.2: general commen...     11   \n",
              "1     1651   Re: Off the shelf cheap DES keyseach machine ...     11   \n",
              "2     1652   Re: text of White House announcement and Q&As...     11   \n",
              "3     1653   Need help !!\\nKeywords: Firewall gateway mode...     11   \n",
              "4     1654   Re: text of White House announcement and Q&As...     11   \n",
              "..     ...                                                ...    ...   \n",
              "595   2245   Re: Space Station Redesign, JSC Alternative #...     14   \n",
              "596   2246   Portuguese Launch Complex \\nOrganization: NAS...     14   \n",
              "597   2247  Subject: <None>\\n\\nOrganization: University of...     14   \n",
              "598   2248   Re: Vandalizing the sky.\\nNntp-Posting-Host: ...     14   \n",
              "599   2249   Re: Crazy? or just Imaginitive?\\nOrganization...     14   \n",
              "\n",
              "    Class Name  \n",
              "0    sci.crypt  \n",
              "1    sci.crypt  \n",
              "2    sci.crypt  \n",
              "3    sci.crypt  \n",
              "4    sci.crypt  \n",
              "..         ...  \n",
              "595  sci.space  \n",
              "596  sci.space  \n",
              "597  sci.space  \n",
              "598  sci.space  \n",
              "599  sci.space  \n",
              "\n",
              "[600 rows x 4 columns]"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Take a sample of each label category from df_train\n",
        "SAMPLE_SIZE = 150\n",
        "df_train = (df_train.groupby('Label', as_index = False)\n",
        "                    .apply(lambda x: x.sample(SAMPLE_SIZE))\n",
        "                    .reset_index(drop=True))\n",
        "\n",
        "# Choose categories about science\n",
        "df_train = df_train[df_train['Class Name'].str.contains('sci')]\n",
        "\n",
        "# Reset the index\n",
        "df_train = df_train.reset_index()\n",
        "df_train"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "id": "FI1FDqirsz3O"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "Class Name\n",
              "sci.crypt          150\n",
              "sci.electronics    150\n",
              "sci.med            150\n",
              "sci.space          150\n",
              "Name: count, dtype: int64"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df_train['Class Name'].value_counts()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5NbA2hpDH3nl"
      },
      "source": [
        "## Generate the embeddings\n",
        "\n",
        "In this section, you will see how to generate embeddings for the different texts in the dataframe using the embeddings from the Gemini API.\n",
        "\n",
        "The Gemini embedding model supports several task types, each tailored for a specific goal. Here’s a general overview of the available types and their applications:\n",
        "\n",
        "Task Type | Description\n",
        "---       | ---\n",
        "RETRIEVAL_QUERY\t| Specifies the given text is a query in a search/retrieval setting.\n",
        "RETRIEVAL_DOCUMENT | Specifies the given text is a document in a search/retrieval setting.\n",
        "SEMANTIC_SIMILARITY\t| Specifies the given text will be used for Semantic Textual Similarity (STS).\n",
        "CLASSIFICATION\t| Specifies that the embeddings will be used for classification.\n",
        "CLUSTERING\t| Specifies that the embeddings will be used for clustering."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "id": "g1NC0e6McsQx"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/home/lucianomartins/Documents/projects/gemini-launches/gemini-embedding/ge-env/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
            "  from .autonotebook import tqdm as notebook_tqdm\n",
            "100%|██████████| 600/600 [05:15<00:00,  1.90it/s]\n"
          ]
        }
      ],
      "source": [
        "from tqdm.auto import tqdm\n",
        "tqdm.pandas()\n",
        "\n",
        "from google.api_core import retry\n",
        "\n",
        "def make_embed_text_fn(model):\n",
        "\n",
        "  @retry.Retry(timeout=300.0)\n",
        "  def embed_fn(text: str) -> list[float]:\n",
        "    # Set the task_type to CLUSTERING.\n",
        "    result = client.models.embed_content(model=model,\n",
        "                                            contents=text,\n",
        "                                            config=types.EmbedContentConfig(\n",
        "                                                task_type=\"clustering\"))\n",
        "    return np.array(result.embeddings[0].values)\n",
        "\n",
        "  return embed_fn\n",
        "\n",
        "def create_embeddings(df):\n",
        "  df['Embeddings'] = df['Text'].progress_apply(make_embed_text_fn(MODEL_ID))\n",
        "  return df\n",
        "\n",
        "df_train = create_embeddings(df_train)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "t-1QKCK8DHsI"
      },
      "source": [
        "## Dimensionality reduction\n",
        "\n",
        "The dimension of the document embedding vector is 3072. In order to visualize how the embedded documents are grouped together, you will need to apply dimensionality reduction as you can only visualize the embeddings in 2D or 3D space. Contextually similar documents should be closer together in space as opposed to documents that are not as similar."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "id": "XODHZlFcFnn6"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "3072"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "len(df_train['Embeddings'][0])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "id": "73aAdKo1UCrL"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(600, 3072)"
            ]
          },
          "execution_count": 13,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Convert df_train['Embeddings'] Pandas series to a np.array of float32\n",
        "X = np.array(df_train['Embeddings'].to_list(), dtype=np.float32)\n",
        "X.shape"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JB3bsmi4Iuak"
      },
      "source": [
        "You will apply the t-Distributed Stochastic Neighbor Embedding (t-SNE) approach to perform dimensionality reduction. This technique reduces the number of dimensions, while preserving clusters (points that are close together stay close together). For the original data, the model tries to construct a distribution over which other data points are \"neighbors\" (e.g., they share a similar meaning). It then optimizes an objective function to keep a similar distribution in the visualization."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "id": "OpyoE-RVSzfe"
      },
      "outputs": [],
      "source": [
        "tsne = TSNE(random_state=0)\n",
        "tsne_results = tsne.fit_transform(X)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "id": "BbsWqQlxJHas"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>TSNE1</th>\n",
              "      <th>TSNE2</th>\n",
              "      <th>Class Name</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>40.186756</td>\n",
              "      <td>-0.446112</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>35.983940</td>\n",
              "      <td>0.442592</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>29.899532</td>\n",
              "      <td>-9.017360</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>33.353500</td>\n",
              "      <td>5.954631</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>24.770006</td>\n",
              "      <td>-8.209906</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>595</th>\n",
              "      <td>-23.769527</td>\n",
              "      <td>14.458261</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>596</th>\n",
              "      <td>-29.530485</td>\n",
              "      <td>16.145725</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>597</th>\n",
              "      <td>-14.785336</td>\n",
              "      <td>11.442585</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>598</th>\n",
              "      <td>-22.677313</td>\n",
              "      <td>-0.399542</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>599</th>\n",
              "      <td>-15.382431</td>\n",
              "      <td>4.611829</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>600 rows × 3 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "         TSNE1      TSNE2 Class Name\n",
              "0    40.186756  -0.446112  sci.crypt\n",
              "1    35.983940   0.442592  sci.crypt\n",
              "2    29.899532  -9.017360  sci.crypt\n",
              "3    33.353500   5.954631  sci.crypt\n",
              "4    24.770006  -8.209906  sci.crypt\n",
              "..         ...        ...        ...\n",
              "595 -23.769527  14.458261  sci.space\n",
              "596 -29.530485  16.145725  sci.space\n",
              "597 -14.785336  11.442585  sci.space\n",
              "598 -22.677313  -0.399542  sci.space\n",
              "599 -15.382431   4.611829  sci.space\n",
              "\n",
              "[600 rows x 3 columns]"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df_tsne = pd.DataFrame(tsne_results, columns=['TSNE1', 'TSNE2'])\n",
        "df_tsne['Class Name'] = df_train['Class Name'] # Add labels column from df_train to df_tsne\n",
        "df_tsne"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "metadata": {
        "id": "z4N7d8MlpVCS"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(np.float64(-45.10566120147705),\n",
              " np.float64(47.539869117736814),\n",
              " np.float64(-41.033332443237306),\n",
              " np.float64(37.77369651794434))"
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/jpeg": "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oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACucsv8AkpGtf9gqx/8ARt1XR1zll/yUjWv+wVY/+jbqgDo6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACud8ff8AJO/Ev/YLuf8A0U1dFXO+Pv8AknfiX/sF3P8A6KagDoE/1a/QU6mp/q1+gp1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXP3XimO3v2gFuXjRtrPuwffAroK5zW9Is4I5tR2uWyCYwcKST371rSUW7SOPGutGnzUna2/odECHQEchhWOvhu0F99pJYjdu2ds1X0bXJ7lnF4sccIXKyfdAx25rRXWrJrgReZ977r/AMLewNHLODaQva4fERjKfyuaFctqPhq5udRkmhkj8uRskseVrpILiG5TfBKki5xlTmpamE5QehrWoU8RFKWqI4IhBBHECSEULk98VJRUFxeW1rjz50jz03HGanVs2bjBa6ImcEowU4bHBrgbdLuy1EXEwdPLfLuT971Ge5Nd20oNuZYsSDbuXac7uK4mxvZLzWomngil8yTkCMAj3z14966KF7SPLzLlcqeut9PwOi1XQ01WSOcSmKQKAcrkEVaihTSNJZYwzrCjN7setc34gur6LVmRZZY4wB5QQkA8e3Xmp5vE1zbvHC8KOURRLu6scDP0o9nNxSvdC+tYenVnJrlltcqSa3cX9rcx3SqYSAcJ8pzkYGadpuntdeckatbT7AVycjIIIz3HT/OK3GsNNj0+W8iiWESR7w5z8vccfXFc9otpcf2xAwYKA2S24HcO+PWtFJOL5dDmnSqRqwVV81+3Y1rPTv7KEl9dwwb0GV8ok/U88flSW2urrDvp8sPlCdWVXVs9q3bxFks5laPzBsPyevHSuM0a7k/ti3AijYFsYWMAqPUHrWcP3icnujor/wCzThSg7Re+m5s6V4cksb8XE0ysI87Ao69smty5t1uraSByQrjGR1HuK5q58UXEOoyRrDH5KOVIOdxAOOtdSDkA+tRV57qUjqwbw7jKnS2W5jW3h9IzK08iSM6ldyxhTyME/Wq+m+Gns9QW4knV1jOVCjk/Wuioqfaz113NPqVC8Xy7BRRRWZ1BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFc5Zf8lI1r/sFWP/o26ro65yy/5KRrX/YKsf8A0bdUAdHRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFQ3TXK2krWkcUlyFPlpM5RGbsCwBIHvg/SgBl/qFppdjNe306QW0K7nkboO34nPGO5rPg8V6JPpl3qAvfLt7M4uPPieJ4iQCAyOAwJyMcc54zVCfVtUsLdrnxTp2j2+lo0YaW3u5Lgo5dQhKtCoChiCWzxjNcXfq1jrOqpcX/APaVvFqek3d3qEgUFAZSvlPtwgCbUfgDAfJ9aAPTNJ1vT9cgkm0+dpBE/lyK8bRvG2AcMjgMpwQeR0NZvj7/AJJ34l/7Bdz/AOimqvociT+PfFE1u6vAIbOJmQ5HmqshYZ9QrR5/CqnxHg11vB/iGS11HT49PGmT+ZBJZO8rDy23YkEoAz2+U496AOzT/Vr9BTqan+rX6CnUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFU9UuIrbTppZ4/MjAwU/vZ4xVyorm3iu7d4Jl3RuMEU42T1IqKTg1Hc4eRRdxym3CohVCF38IFGCpJ6cnOTwfrS2kBjgdi6M6yK6qrBgCAcZI4H/wBatcaHpjpLaW16PtLHnLBiAD0wKyL6KOyufspupB5QH+rXgHGSTyOc/piu6M1LRHzlSjKlapNfitze8M6dcWcUss2FEoXaoOeBnnj61cv9btNPnWGUsznkhRnaPeuam1zUYLzy0nykRChSoIcDufr1/GtbU/Dzahdi6jlWMyAb1YZxx2rGUFz81R7ndSrv2Lp4VXce5uwzJcQpLGcowyDXO+INHvLy8We3TzF27duQMfnW5BHFpmnKjPiOFPmY/wA6jstXs9QkaOCQl1GcMuMj1rODcW5RO2vCnWgqVV2bE0m1fT9LjhnZdy5LHPAyc1Jbx2BZrm3W3LHO6RMfjzWf4knjNl9kE6pM5DBCcbgPU9vx9KwbXSr99NuPLjYByp2g/fAz/wDW/KrjDmXM3a5z1MR7Kao04cyijs2uLf7O1wZEaJASWByBiuT1O702+MlzbwM1wpywckBl9cA89qs6HpNy1pdx3KvFFMgUBhzn1xWfqNhcaKkYSTmQnMqcH2Ht3/yKunGMZNJ6nPiq1WpRU5QtHr3vsaOhy3GrW13aXTs8JUYb+6fb/Past5TomplIER5ITgyODlsj0zwOa6Pw5cSS6aRNjcpyDjkr6n9ah+1aHqmpqrxhps4V2BAc+nv+NClaclbQJUVOjTkp+/0b39PkSXniOK0itz5LNJLGJCucbQau6c1ndQi9t4ERpM5baA2e+ag1TQodSkSTzGikUbcgZBFWI44NH03aufLiBOT1PqaxfJyrl3O6Crqq3VtyLYa+jWEl39pa3Blzk8nBP06VfrE07xHDfXgtzC0Zb7jE5z9fStgOrhgjqSOODnBqZqS0ka0J0ZpypW1Iby+gsIDLMxCjjAGTmksdQt9RhMluxIBwwIwQa4630/UX1YLLDKWL4kZgcEd8npjFdNomkHS4pN8geWQjdjoAO361pOnCMd9Tmw+Jr1qnw2j1NWiiisD0QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACucsv+Ska1/2CrH/0bdV0dc5Zf8lI1r/sFWP/AKNuqAOjooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBksUc8TxTRrJG4KsjjIYHqCD1FVbbR9MsrB7C1060gs3zvt4oFWNs9cqBg5q7RQBWsdPstMtVtdPs7e0t1JIit4ljQE9eAAKxvH3/ACTvxL/2C7n/ANFNXRVzvj7/AJJ34l/7Bdz/AOimoA6BP9Wv0FOpqf6tfoKdQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU11LRsoOCQRn0p1FAHHafoGoQ6pE0ihI43DGQMOQPTvzVzXdGtw0uovM6rwXQLksenB7V0tRXNvHd27wTLuRxgitvbSck2ef8A2fSjSlTjr117mDot/Z39ysLWEccsSDy34Y4HHXFdHWbpuiWumStLEXd2GMueg/CtKpqOLl7uxvhIVIU7VbX8itf2gvrKW2Ztu8cH0PasjRfD8un3huJ5UYgEKEz37mugopKclFxRU8NTnUVSS1Rz+t6DNqF2txBIgO0KyuSOnetbTrMWFhFbbt2wHJ9STmnPf2kdwIHuI1lPGwtzViiU5OKi9iadClGrKpDd7iO6xoXdgqqMkk8AVRlFnrERSK5yUP3oX5X/AOtXP69q9yL6WzAXyEwChXO/gHn/AOtVzQNLlgvGvMbIHiGxScnnB/TpWns+WPM3qc7xfta3sYxutmbFrp8NpbPCpd/Mzvd2yzcY5NYC+GprOV7lZVlEILxoAcsw5AP44p2u3l3FfsPOkht4wpXy+rk5/wAD+Vami6smpQEYYSxgB89/en78Y83cl/V61VUWrOOxg6HqN/NrCI80kiuT5iscgDHX2rrp4UuIXikGUcYIrM1PWLfSpggh3SuNx2gDj3q/ZXkd9aJcRZ2t2PUGpqNu00rI0wijDmoOfMzF/wCEZW1jnlt5nebYwiBwMEjH51S8O2F9DqnmPFJFEoIfeMbvb35rr6KPbSs0+o/7PpKcZx0sFFFFYncFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFc5Zf8lI1r/sFWP8A6Nuq6Oucsv8AkpGtf9gqx/8ARt1QB0dFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXO+Pv+Sd+Jf+wXc/+imroq53x9/yTvxL/wBgu5/9FNQB0Cf6tfoKdTU/1a/QU6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4698PX8upyFFDRyOW8wngZPeuwQbUVSc4GM0tFXOo5pJ9DmoYWFBycepWn0+0uZVkmt43cdCwqyBgYFMeaOMgO6qW6AnrT+oqW31N0opu25galfaXqMn9nzSOrB8CRRwrdMU2WKPwxpzSwZlmmYLufp37fnUTeFC1+ZPPX7OW3EY+br0/8Ar10Fzaw3cBhnQPGe1buUY2Sd11POhSrVHOc4pT2T/r8zlIEPiaVjMRDPGAN6DIZfTFdElsdM0d4rUF3jRiuRklutS2WnWtgrLbxbd3U5yT+NWqidS7stjbD4XkjzT+N7s43QtRv5tXRHmkkR87wxyB7+1dlTFijRiyooY9SB1p9KpNTd0rGmFoSow5ZSuFFFFZnSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFc5Zf8lI1r/sFWP/AKNuq6Oucsv+Ska1/wBgqx/9G3VAHR0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFc74+/wCSd+Jf+wXc/wDopq6Kud8ff8k78S/9gu5/9FNQB0Cf6tfoKdTU/wBWv0FOoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDj/EGnX02qmRInljcAIVGccdPbmuosI5YbCCOY5kVAG5zzViitJVHKKj2OWjhY0qsqiesgqlqt62n6dJcIoZlwAD0yTirtMmhjuImilQMjDBBqI2T1N6ik4NRdmYWg65cahdPBcKhIXcrKMd+n610FVLPTbSw3fZ4tpbqScmrdVUcXK8VoZ4aFSFNRqu7CiiioNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5yy/5KRrX/AGCrH/0bdV0dc5Zf8lI1r/sFWP8A6NuqAOjooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACobq6t7G0luruaOC3iUvJLIwVUUdSSegqaigDmJvH/htrWZtN1ey1O7VR5dpaXCPJKxIVVAB7syjPQZ5rlrLUNdTQL2yvdUla/uvEi2ElzExHko/ll1iz90AblX0znrXomp6Tp2s2otdTsbe8twwcRXEYddw6HB78muXtvhxpljYanBp5hsp7q/S+t57e2VTbshVo1xnDKpB44yGI4zmgC54Zaay1/XdDa7ubq2tPInt3upTLIiyq2ULtywBQkZJPzYql8R9fs7Xwf4h06SHUGnk0ycBo9PnkiG6NsZkVCg98njvitzQtEm0ya+vL69F7qF86tNMsPlIAq7VVUycADPUk5J5p/ijTZ9Z8J6xpdsY1nvLKa3jMhIUM6FRkgHjn0oA1E/1a/QU6ubW88ZhQP7B0Pgf9BiX/5GpftvjP8A6AOh/wDg4l/+RqAOjornPtvjP/oA6H/4OJf/AJGo+2+M/wDoA6H/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yw1W3+z6jY215AGDeXcRLIuR0OGBGa42zh8QnxRrNifFOp3MenQW08URgtFMzP5hKMRCMA7AOMHk81S8LeKLzVr/AE9B4phm1J2H9paJe2y2zQfKSwiG0OSpx1LAgHkdaAPR0RI41jjVURQAqqMAAdgKdXmmg+NNXl07XrfVZVF2FvrnSrgIoEkUMkkZTGMFkKA+6spOeaafEks+swW+qeNRoUJ0ayulBNpH50shk8w5ljbP3V4GAM+9AHptFcX4i1fVtL+Hlxf+H7+LWJY7Wef+1J5Itqois24CNQrnjaABjIGe+eutHaWygkc5Zo1Yn1JFAE1FFFABRRRQAUUUUAFFFFABVHUtF0rWo0j1XTLO+jjO5FuoFlCn1AYHFXqKAMhfCvh1LD7AugaWtn5vnfZxZxiPzMAb9uMbsADPXitZVVFCqAqgYAAwAKWigAooooAKKKKACiiigAooooAKKKKACiiigCKe2gufL8+COXynEkfmIG2OOjDPQj1qCPSdNh1GTUYtPtEvpRtkuVhUSuPQtjJFXKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDAj0K5Gv6/fG5EUWo2sEELxMfMjZBIC3IwPvgjr0rIbw54g1WbSI9bGkMumXMVwNQgLm4mMZyAFKgR7sfNhm4JGOa7aigDgr7wFdXvgR9KF1DBq8N1d3VndISVQyzSsFJxnaySbWGD1PXAqW28P+IdI1ZLuytNHvUbSrSycXN3JEVeEyZK4hfIO8eh46V3FFAGBqenanrXgjVNMuIbK0v7yyntlWGdpIVLoyqdxRTjkE/Lx71tW0bQ2sMTEFkRVOOmQKlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z",
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig, ax = plt.subplots(figsize=(8,6)) # Set figsize\n",
        "sns.set_style('darkgrid', {\"grid.color\": \".6\", \"grid.linestyle\": \":\"})\n",
        "sns.scatterplot(data=df_tsne, x='TSNE1', y='TSNE2', hue='Class Name', palette='hls')\n",
        "sns.move_legend(ax, \"upper left\", bbox_to_anchor=(1, 1))\n",
        "plt.title('Scatter plot of news using t-SNE')\n",
        "plt.xlabel('TSNE1')\n",
        "plt.ylabel('TSNE2')\n",
        "plt.axis('equal')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "skgpKPdEie70"
      },
      "source": [
        "## Compare results to KMeans\n",
        "\n",
        "[KMeans clustering](https://developers.google.com/machine-learning/glossary#k-means){:.external} is a popular clustering algorithm and used often for unsupervised learning. It iteratively determines the best k center points, and assigns each example to the closest centroid. Input the embeddings directly into the KMeans algorithm to compare the visualization of the embeddings to the performance of a machine learning algorithm."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "metadata": {
        "id": "8da-KTwtxk27"
      },
      "outputs": [],
      "source": [
        "# Apply KMeans\n",
        "kmeans_model = KMeans(n_clusters=4, random_state=1, n_init='auto').fit(X)\n",
        "labels = kmeans_model.fit_predict(X)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 19,
      "metadata": {
        "id": "mYMIXXRm0ZC8"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>TSNE1</th>\n",
              "      <th>TSNE2</th>\n",
              "      <th>Class Name</th>\n",
              "      <th>Cluster</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>40.186756</td>\n",
              "      <td>-0.446112</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>35.983940</td>\n",
              "      <td>0.442592</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>29.899532</td>\n",
              "      <td>-9.017360</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>33.353500</td>\n",
              "      <td>5.954631</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>24.770006</td>\n",
              "      <td>-8.209906</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>595</th>\n",
              "      <td>-23.769527</td>\n",
              "      <td>14.458261</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>596</th>\n",
              "      <td>-29.530485</td>\n",
              "      <td>16.145725</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>597</th>\n",
              "      <td>-14.785336</td>\n",
              "      <td>11.442585</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>598</th>\n",
              "      <td>-22.677313</td>\n",
              "      <td>-0.399542</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>599</th>\n",
              "      <td>-15.382431</td>\n",
              "      <td>4.611829</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>600 rows × 4 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "         TSNE1      TSNE2 Class Name  Cluster\n",
              "0    40.186756  -0.446112  sci.crypt        1\n",
              "1    35.983940   0.442592  sci.crypt        1\n",
              "2    29.899532  -9.017360  sci.crypt        1\n",
              "3    33.353500   5.954631  sci.crypt        1\n",
              "4    24.770006  -8.209906  sci.crypt        1\n",
              "..         ...        ...        ...      ...\n",
              "595 -23.769527  14.458261  sci.space        2\n",
              "596 -29.530485  16.145725  sci.space        2\n",
              "597 -14.785336  11.442585  sci.space        2\n",
              "598 -22.677313  -0.399542  sci.space        2\n",
              "599 -15.382431   4.611829  sci.space        2\n",
              "\n",
              "[600 rows x 4 columns]"
            ]
          },
          "execution_count": 19,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df_tsne['Cluster'] = labels\n",
        "df_tsne"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 20,
      "metadata": {
        "id": "wwuk36dt1XaS"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(np.float64(-45.10566120147705),\n",
              " np.float64(47.539869117736814),\n",
              " np.float64(-41.033332443237306),\n",
              " np.float64(37.77369651794434))"
            ]
          },
          "execution_count": 20,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAIhAvUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiisrxNqF3pXhrUL+wt/tF1BCXjj2lsn1wOTjrj2oA1aK4fRNWu7+7s5tK8W2muxO4F3ayJFE8cZHLoFAYEHHDZz61qXPjXT7a5uV+yX8traTeRc30UIMML5AIJzuOCRkgEDvQB0lFc3qPjO0057w/2dqdzbWJ23V1BCDFEQATnLAnAOTtBxWZe+L7+HxPqlpbWFzcWdvpa3ULRrHtLHed5JcEqcAAeoPHQ0AdvRXIaV4yJ8M6HPe2N9PqmoW6sltDGhkmwil5AA21U5zkkdRwOlWpvHGmQ6VHfG3vSXvBYNbCEedHOeiMuevToT1HagDpaKpR6hnSW1Ce0uLYJG0jwShfMULng4JGePWsXTfHOn6k9gRZajbW+oYW1ubiELFI5GdgIYkHg4yADjgmgDp6K4zRvF7R6FbSah9ovtQury6ht4LaJTJIscrjgcKAqgZJI+uTUeu+OHj0L7TpdpeLeRahBa3NvLEglh3OuQQzY+ZThSCR8w56kAHb0VUuNRt7LSn1G+JtYIovNl83GYxjJBxnkdOM+2ax7bxhbz3MdvJpeqWs08Ty2iXEKobraNxVPmwGx2baaAOjorkvAGraprulT6lqT3P76ZxFHJFEsaKrsMIUyx6AHceo445p9z490+2fUD/Z2qSQadO0N5cRwKY4cYyxO7JGDngEgdQKAOqorC1DxVa2d8bK2sr7UrhIlnlSxiD+UjZ2liSBzg4AyTjpS2vi3SryZUhkcxPYf2gk5XCNEG2t3zuU4yCOMigDcornLLxrpd9pelahElwI9SkeONGVQ8ewOXLjPAAQ5xnqKfpfi221W6tYk0/UYIrxDJa3E8IEcygbsghiRkcjcBmgDoKKoX2r2+n6hp1lKkrSahK0URQAhSqFzu56YU9M1Ru/Fun2UupxSx3BfT5YYWVUBMrygFFQZ5JyBzj+tAG7RXLX3iyEaJqU8sGq6ZNZeV5itBGZQHYBSuSyMDyDycc98U++8bWllqGp2Sabqd1Jpu03TW8KsqKyBw2SwyMHoOeDx3oA6aisC68XWMUlpFZ215qUtzbC7SOyiDFYT0dtxAAPYdTjpVzQddtPEeljULJZlgMjxjzk2sSjFScduR359QKANOivP4/HFzFNqGlpJFea3Nqs9pp9s5VAka4wzkY+Vefc9B7R+LNY8ReFovD6rqjXkgM0+oMbeMefHGFd1UBflAXdjHPqTQB6JRXD/EHxLqGl2VguiXCpNK6zyyhFfFuGRDwQRy0ic/WtfUfF9pYXt1ax2OoXps1DXclpCHW3BGfmyQScc4UE4oA6GisO68U2sTWyWVpeanJcwC5RbKNW/dHoxLMoAPYZz7VUbxzpgstNuY7a+mOoSyQwwxw5kEiZ3Iyk8HKkenckDmgDp6K5xPGmnmwuLiS2vYbiC5S0eykiHn+a+NqgAkHIIIOcY71oaRrSasbiP7HeWc9uwWWG6jCsMjIIIJUg+xNAGnRXMX2oanqniibQtLu1sYrO3Se7uhEskm5ydiIG+UcKSSQewrP1688T+HvDGvzS30dwLe3Etlf+UiyBs4ZXTG044IIAHPSgDt6KzItctZb3VrVY5hJpYQzEgYbcm8beeePXHNZo8aWcsFg9np+o3kt5aLerBbxoXjibozZYDrxgEng0AdLRXHy+LbibxV4ftbKzu5NP1C1kmdvKVTnKgE7mDDZk7hjPIxnmrUfjjTZJUYWt8NPef7OmpGEfZ2fdtA3Zzjdxuxtz3oA6aiuYuPGFu82r2cFnqedOEi3F1FFGUiIj3ggs3PHQYPPUAEZavjO2iks7GKy1TULybT4r4CGFNzRtkZb5goOV5HA5GM0AdTRXOnxppr6dp13aw3l3JqO77PawRDzW2cPkEgLtPByetWtB8R2viEXv2aC6hazm8iZLmPYwfaGIxk9M4+o4yMGgDYooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopvmR/31/OjzI/76/nQA6im+ZH/fX86PMj/vr+dADqKb5kf99fzo8yP++v50AOopvmR/31/OjzI/76/nQA6im+ZH/fX86PMj/vr+dADqKb5kf99fzo8yP++v50AOopvmR/31/OjzI/76/nQA6im+ZH/fX86PMj/vr+dADqz9ai1KbSJ10e4jgvxhoXlUFCQQSp4PBAIz2zmr3mR/31/OjzI/76/nQBwt5o17r2qabcN4Wi0i8truO4l1EzxM21TllUodzbhx8wAwantLXxLoUeoaXp2mxTC4vZbi21B5l8uNZH3HzEyHJXJ6A545Fdn5kf8AfX86PMj/AL6/nQB5rr/h7xDqceu28+m3OoT3LSrZXB1Ly7aKIjCjygw+Ye6nJ74rVh0XVo9Z3mwPkXmhRWTy+an+jyoHJDDOSDuAyufy5rtfMj/vr+dHmR/31/OgDzZfDOsNYeHbqXTL0T6bYf2dcWttqIglYAJiRHRwCMqflLDqPSrFv4W1FbazmGntFM2uQXk0ct6biRYkXbud3Y5bpwpPGOteg+ZH/fX86PMj/vr+dAFPWf8AkBah/wBe0n/oJrh9Ctta17w34RtJtMS1s7MWl41556sJVjQFFRR8wJ+XOQAOcZr0JzDJG0chjZGBDK2CCD2IpsK21tBHBAIooY1CJGgCqigYAAHQAdqAOC03w/rmjjS9Ti08XFxaT3yTWfnIrNFNMXVkYnbkYU4JHB7Glv8Aw9rl/aavqr2CpfXl7ZzxWAmUsI4GU4L527z8x646DNegeZH/AH1/OjzI/wC+v50AY3iPS5/EfhG709R9muLmAFVlIOxxhgrYyOowcZ/Gsv7Prmv63o02oaQNMt9Nla4lZrhJDLJsZAqbSfl+YklsHgcV1vmR/wB9fzo8yP8Avr+dAGF4L0670nwra2V9F5VwjzFk3BsBpXYcgkdCKyH0DUz4X8aWYtv9I1K5upLVN6/vFeNVU5zgZIPXFdp5kf8AfX86PMj/AL6/nQB57d+F9Rtdanv47LUbxLu2gVksdVNo0UkabSGAdQynjnJI54qPU/BeqDwxotpp1vFHdJ51reJHOWCQXGTKQ7nLYOD6nnFejeZH/fX86PMj/vr+dAHE6V4Y1Gz8YapcGGFdMiWV9N3kFTJOEMmVByACh9MhziqugeH9Wsdb0+S10qXRYIyx1BI74SWk/wApGIotxK/NggkLgDvXoHmR/wB9fzo8yP8Avr+dAHPeKbC/mu9F1LTrX7XJp12ZXtxIqM6NGyHaWIGRuBwSPrWEdF1u9/4SW5vNCtJBqM1s6WNxOGEkaKFZdyn5X4yD0B9RzXfeZH/fX86PMj/vr+dAHmsvhnXptA1uztrO8t7OeOBbTTry+Wd1dZAzsGLEKu3HG49DXRw6PfJqXjCZoMJqPl/ZTvX95i3VD34+YEc4rp/Mj/vr+dHmR/31/OgDzrTEvvCt9p2LWG6un0K1gurP7XHHJC0QI3AsQrJksDgnBHfNbXw4aaXwitxMqB7i8uZv3Zyp3TOcqe49D3Fb99pulaoEGoWVldiM5T7REsm36ZBxVpDDFGscZjRFGFVcAAegFAHE23gdLyy8RLeW4tL281SS6tbxCDImMGJwQcjBzxx1PrUqadrmsX3hy41rTUje1W7hv9sqMjBowgZQDnDemMjvXZ+ZH/fX86PMj/vr+dAHma+EdefwtqdtdQCW9j+zWFiPNX57WGYMHznALAkkHn5RVrUfDGpWut6xPbWOo30WoS+fE1pq7WqoxQKVkUOuRlc7gCcHHavQvMj/AL6/nR5kf99fzoA4Cfw9q9m2nWn9n3N7pVvYJEtpYaibdI5wTuLFnVnXGAOTjB4qPw54Y1mwbw2LqwSIWOo300+yZWVEkSQIVOckEsB0z6gV6H5kf99fzo8yP++v50AcRqPh/UZrzxNIdItr62vbu1kSCeQL50aRIr7CD8jgg4Jx0/Gr3g/TNT0+41A3Ed3a6a/li0sru7FzJERnedwLYU5XA3HoeldT5kf99fzo8yP++v50AczfWGp6X4pl1zS7MX8N5bpBd2olWOQMhOx1LYU8MQQSO1Zuvaf4o8Q+HteSW1W3W4tRBZ6Z5sbMWzku79AT0ADYwPWu48yP++v50eZH/fX86AOOvLHXLHXvEEljpi3kOrxReXN9oRFgdY9h3gnJHQ/KDWW3hq/XRtAhu/DxvHtNNjgMlneC3uraYAZG/eAyfQnkHrmvRfMj/vr+dHmR/wB9fzoA4iy0fxDa3vhe7v43v5reC4tryRZl3RCRkKsS2N+1VwSOTjODmsS08Ealb6bb6FLpt7PHFKqtdPrEgtGiD53eSHBDYA+Xbjd3r1LzI/76/nR5kf8AfX86AOTh0XUEsPGUbW+H1GeZ7Ub1/eBoEQd+PmBHOKPD+i6hY+ILW6ubfZDHoFtZs29TiZHYsuAc8Ajnp711nmR/31/OjzI/76/nQB5rY2N/4Ybw/cy28T3yG/hawa5jR5I5JzIGjYnaSBtJGRw3tW14CuLi+ufEt9PDHEZtTwFjkDqNsUYxuHBIxgkcZBrp72z07U4PIv7a1u4s58ueNZFz64NSW8dpaQJBbJDDCgwscYCqo9gOBQBPRTfMj/vr+dHmR/31/OgB1FN8yP8Avr+dHmR/31/OgB1FN8yP++v50eZH/fX86AHUU3zI/wC+v50eZH/fX86AHUU3zI/76/nR5kf99fzoAdRTfMj/AL6/nR5kf99fzoAdRTfMj/vr+dHmR/31/OgB1FN8yP8Avr+dHmR/31/OgB1FN8yP++v50oYMMggj2oAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMuiiirEFFFFMAooooAKKKKAIlA+1SHAzsXnYQep79D9O341LUSkfapBkZ2LxuOep7dB9e/wCFS0gCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABUVuAIzgAfO3RCv8AEex/n361LUVuQYzgg/O3Ri38R7n+XbpSAlooopgFFFFABRRRQAUUUUAFFFFABRRRQAVFcAGMZAPzr1Qt/EOw/n261LUVwQIxkgfOvViv8Q7j+XfpSAlooopgFFFULfW9Ku9QmsLfUrOa8h/1tvHOrOn1UHIpAX6KrW+o2V5NNDbXlvNLAdsqRyBmjPowB4qzQAUUUUwCiiigAooooAKKKKAIlA+1SHAzsXnYQep79D9O341LUSkfapBkZ2LxuOep7dB9e/4VLSAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAB6VFbgC2iAAACDgIVA49DyPpUp6VFbkG2iIII2DBDFh09TyfrSAlooopgFFFFABRRRQAUUUUAFXbT/VH/AHqpVdtP9Uf96pewDZLxY5DGI3cr124wPzpv27/p3l/T/GoT/wAfU/8AvD+QrBl1PVb/AFe9sdI+xxR2O1Zp7pGk3SMobYqqy9FK5JPfpSsM6T7d/wBO8v6f40fbv+neX9P8a5O08T3MWoTwa1bR2KQWsMjhcufMeaSIYI6qdqkcZG7n21rrXNNsnuUuLnY9ssbSrsYkCQlUxgfMSVIAGTRYDW+3f9O8v6f40fbv+neX9P8AGuWu/GNhEdMNqJZ0u702kmLeXdEQhY7l25Dfd4IBwSegNaEXiLSptR+wR3WZ97Rj92wRnXO5Q5G0sMHIBzwaLAbP27/p3l/T/GpIbpZnKbGRsZw3cVi6Xrmn60JG0+Z5kj4Z/JdVzkjALAAnIOcdO9aUH/H8v+438xRYC/RRRSAKKKKACiiigAooooAKKKKAMuiiirEFFFFMAooooAKKKKAIwT9ocZbG1e4x1PbrUlRqP9Jc4/gXnb7nv3+n+NSUgCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABUcJJQ5LE7m6kHufSpKjgGIzxj52/h29z/nPekBJRRRTAKKKKACiiigAooooAKKKKACiiigAqOYkIMFgdy9CB3HrUlRzjMY4z86/wAO7uP857UgJKKKKYEN5FJPY3EMMphlkiZEkAyUYggH8OtfNfhr4W+NbDxQ++xe1KQ3EaXglG0O8TojAg56sDnqPrxX01RSsB87fCrwD4t0j4gwXt7p89haWgkW4eRgBICpAVcH5+SDxxxnPSvomiuV8f8AjWHwL4fXUpLVrqWWYQwwh9oLEE5J5wAAex7UAdLcXENpbS3NxKkUESF5JHOAqgZJJ9MVy3hz4l+F/FWqvpumXztdAFkWWIp5oHUrnr9OD7Vi+FfGNv8AFrwtrmly2r6fceT5MoV942yAgMpwO4PGP51ifD/4NXvhfxdHrOpajBKlrv8As6QA5cspXLZ6cE8DP19QD2OiiimAUUUUAFFFFAEYJ+0OMtjavcY6nt1qSo1H+kucfwLzt9z37/T/ABqSkAUUUUwCiiigAooooAKKKKACiiigAooooAKjgyYIySSdozuIJ/EjipD0qO3GLeMYxhRxt29vTt9KQElFFFMAooooAKKKKACiiigAq7af6o/71Uqu2n+qP+9UvYCqf+Pqf/eH8hXOGDU9F1vUrmz01tQtNQZJtsUqI8UoQIc7yAVIVTkHIOeK6M/8fU/+8P5CloQzgrzQfEV8dRuLuOGS5mtLYoqOoQPHcyS+UD14UqNxGCTU1zpeq6ndazeXOiFY7iOzENu90qynynkLEOjfI43Ag5x05647eigDh4NL11YrKaW3uZ0ttWW4jguJ4muFh8lozucEKx3NnqTjuTUOl+F721u7K0msbqRLW8Mxu5NScwFQzMrLCH4fkcFcdeTXfUUAY/hWwuNM8N2lpdReVMm/cmQcZdj1HHetmD/j+X/cb+YpKWD/AI/l/wBxv5ih7AX6KKKkAooooAKKKKAGTTRW0Ek80ixxRqXd2OAqgZJJ9KyIfFuhz2tzcLe7I7dFkk82J42CscKwVlBYE8AgHJ4FX9UuLW00q7ub1N9pFEzzLs35QDJ+Xvx2rznXnWHxnZ3R1Bb+zme2uZJW24tIluF2LlcDYTJnJ5/d5JPYA9E0zVrLV4Hmspi6xuY3VkZHRhzhlYAqcEHkd6u1zmius3i/xHNCweD/AEaMspyPMCMWGfUBk/SujoAy6Kj2zZGXTGRn5D+Pek2z4/1kecD+A9c89/SrES0VEVnwcSRj72Mofw79u/r7UuJd33027um09MdOvrz9OPegCSiogs+BmSMnC5wh/wCBd+/b096Ns+P9ZHnB/gPXPHf0oAloqMrNk4dMZOPkPpx3oCzZGXTGRn5D6c96AEXH2qTpnYvrnqfwqWqyif7Q482POxOx65OTtzxx/nipCs+DiSMHDYyh/wCA9+3f19qAJaKjxLu++m3d02npjp19efpx70gWfAzJGfu5wh/Hv37envQBLRUW2fH+sjzg/wAB6547+lKVmycSJjJx8h/DvQBJRUYE2Rl0xkZ+Q9Mc9/Wk2z4H7yPOB/Aeuee/pQBLRURWfBxJGDhsZQ/8B79u/r7UuJd330xu6bT0x06+vP8AnNAElFRBZ+MyR/w5+Q/j379vT3o2z4/1kecf3D1z9fSgCWioys3OJE74+Q/h3/z7UATZGXTGR/AemOe/rQBJUVvjyzjH326Z/vH1oCz4GZI84GfkPXPPf0/L3qOETmJsSx53SAHBbB3HHft3H8qALNFR4l3ffTbnptPTH19f896As3GZI+2fkP49/wD9XvQBJRUW2fH+sjzj+4eufr6UpWbnEid8fIfw7/59qAJKKjAm3cumMjjYemOe/rSBZ8DMkecDPyHrnnv6fl70AS0VEVnwcSR5w2PkPXPHfsOvr7UuJd330xk8bT0x9fWgCSiows3GZE7Z+Q/j3/8A1e9Jtnx/rI84/uHrn6+lAEtFRlZucSJ3x8h/Dv8A/r9qMS7vvpjI42npj6+tAElUNa1Kz0fSZ9Q1CdILS3xJJI+cAAjoByT6DucVaCz4GZI84XPyHrnnv3HT0965r4gafZan4J1Cz1jUobGzkUbrlhgIwcMh5PPQfL1btigBvhH4i+H/ABpPPb6XLMtzCN7QzptYpnG4ckEZI9xmusrxz4OeBbLSrq48QWniC01QsjWyC2U7UBIJ3ZwQ3C8Y6euRj18LNxmRO2fkP49/8+9CAkrD8SeLNK8L2rSX8484wyTRW68vKEUscDt0xk4GSK8r+NXjHxJ4f1nTrHT7l7W3e380zxoP3j7iCOc9AF/76qnH4X8U/EXRdA8XQz2h1BbeSzuIrvKJPEHdd3yj+JWYHp6jFFxnN+O/iV4h8QJpeoWNzdaZYvEw8q0nYASh2BDMMEttCHB7EHAzXr2j+HpPH3wq0u08YRz/AGt18zzAdkqkFgj89yhGcjnNT+Bvhnp/g5vtkckjX06AToZS8KeoQYGecYZgTgds12v75VBeWIYC5Owgdfm79x09PekBz/g3wLo/geymt9LEzvOwaaedgXfGcDgAYGT27101Q4mZcrLGcg4Ow4znjv6fn7U4ibJw6Yyf4D0xx39aYirqWtaXoyxtqeo2lkshwhuJlj3H2yeauI6SIHRlZGGQwOQR65r5q+LusaHq3j2WCeW/d7SJbWSaHZ5cTAkttQ8vy2D8y8jvXr/huyvvDPwnjiecak9tYSyp9nLEyA7nVUJ5+6QBx/hRcDT0/wCIHhbVddbRbLWIJr8EgIA21yOoVsbWP0Jrpa+QtFtNN0HVdO8Q3GrJNYQXQkhjgifz5WjKtt2sAq4yu47scnBbFfT/AIY8TWni/Q01XSpv3LOUMciYeNgOVbBIzkg+mD+NFwNx5EjVmd1VVG5ixwAPU1BY6hZanb/aLC7guoclfMgkDrn0yK+XIfD/AIx1TVtf068stQfWbqP53kRtsm2QMV3n5QpxkHOPlAHWvQ/gn4O8S+H7rVL3U4JLC3niWNIJhzI4b7xXORgZHOM7qLjPZFx9qk6Z2L656n8KlquBN9qkAkTG0HHJwOccZ4579+napAs2RmRMZGfkP496BElFRbZ8f6yPOB/Aeuee/pQVnwcSRj72Mofw79u/r7UAS0VHiXd99Nu7ptPTHTr68/Tj3pAs+BmSMnC5wh/4F379vT3oAloqLbPj/WR5wf4D1zx39KUrNk4dMZOPkPpx3oAkoqMLNkZdMZGfkPpz3pNs+P8AWR5wP4D1zz39KAJaKiKz4OJIwcNjKH/gPft39falxLu++m3d02npjp19efpx70ASUVEFnwMyRn7ucIfx79+3p70bZ8f6yPOD/AeueO/pQBKelRW2Ps0WMY2DGM46e/NKRNziRMc4+Q/h3qO3ExgiJkQjap4y2RjnnPPPegCxRUW2fA/eR5wP4D1zz39KCs+DiSMHDYyh/wCA9+3f19qAJaKjxLu++mN3TaemOnX15/zmkCz8Zkj/AIc/Ifx79+3p70AS0VFtnx/rI84/uHrn6+lKVm5xInfHyH8O/wDn2oAkoqMCbIy6YyP4D0xz39aQLPgZkjzgZ+Q9c89/T8vegCWrtp/qj/vVmlZ8HEkYOGxlD1z8vfsOvr7VoWQby33EEb/lwMYGBSewFc/8fU/+8P5ClpD/AMfU/wDvD+QpaEM+ffih8UPFeh+PbrS9LuxZ2loI9q+SreblQxYlgfUjjHT1r3Dw7qE2reG9M1G5iEM91axzSRgEBWZQSOfrRqHh3RdWuYrnUdJsrueIYjkngV2UdcAkVpdBgUAFRXMjQ2s0qjLIjMB6kCpaKYHBaNaRWP8AwiGowZ+2aouL6Xcc3G+3aUs3rhlGPQcCu+g/4/l/3G/mKw9O8L2em3cM8dxdSpbKy2sEsgMdsG6hAAD04GScDgVuQf8AH8v+438xS6AX6KKKkAooooAKKKKAAgEYPIqlb6NpdpBPBbabZwwz/wCujjgVVk/3gBg/jV2igCC0srXT7ZbeytobaBfuxQxhFH0A4qeiigDLoooqxBRRRTAKKKKACiiigCMZ+0P97btGOBjv+P8An61JUSgfapDgZ2LzsIPU/wAXf6dvxqWkAUUUUwCiiigAooooAKKKKACiiigAooooAKjhyEO7dnc33gB3PpUlRW4AjIAA+duiFf4j2P8APv1pAS0UUUwCiiigAooooAKKKKACiiigAooooAK4X4reD7/xn4Ujs9NkQXVvcCdY5DgSYVl257H5uM8fzruqiuADGAQD869ULfxDsP59utIDzX4O+AtW8G2eoz6w0cc96Ywtuj7tgXdySOMnd29Py9E1PUbbSNLutRvH2W1tE0sjYzhQM9O5q3WLqMmieI7fUPDkt/bSySwtHcW8UymVFPGcdQRx2oA4vw/8SPCfxI1YaFeaMS53SW6X8UciybRngc4bGTj0B5r0yONIo1jjRUjQBVVRgAegFfP/AIg+Hs3wp0e48TaTfzXt8sohglMIUWaPkGQjnc2PkzwBvzjpWFZ/Evxp/wAIDqLjVJ5XjvIYftTIDJEjrISN2O5UDPUfiMK4z6frxH453WralcW2g6eszpEouJbaIZa4DZAYAcsFKtkdsg1sfA/xPr/iLSdSTWJZLqG1kRYLqQfMSQdyE98YU88/N9K9I1HRtL1hY11PTrS8WM7kFxCsm0+oyOKe4jgvgjpuuab4Mmj1iOeGJ7ktaQzghkTAzweVBbPHHc966vxr4kfwn4UvNYjtDdSQ7QkQyASTjJI6AdT9K31VUUKihVAwABgCvnX4uQeMrj4gy/Zv7Qa0jWM2CWznptG4qqnJbduzgZ6dsUAVPDWk6L8WfFU810s+n6qyG5u4oMeRKAQNyZyykkjIJ9cGuz+K/j7V/A82maFoMcdshthIbh4g3yg7Qig8DG3njuOlbng4+EfCT21teXNhY+KdRgiN9E0o3+aVBK4+6mSc7RjJPHavJ/Eq+IY/GetHxLbyzabBLLcn7TCXTy92E8lj93dlF4P+8DtxSGdna+Drf4veBtM1hhDoupJNMsr29sPKnJb5m25BycDnPXd1r0jwR4PtfBHh1dKtpmnYyGWaZht8xyACcdhgAY9q4v4YfFK18R6mPDo0SDS1SJntVt2ymF5K4wMHGTnoeenfF+OHi7xJomu2Gn6bdz2Ni9uJvNh+UyybiCN3sAvA/vc9qAPcqK5T4batqmueA9N1DWATdyq2XK7S6hiFbHuADXV0xEYz9of723aMcDHf8f8AP1qSolA+1SHAzsXnYQep/i7/AE7fjUtABRRRTAKKKKACiiigAooooAKKKKACiiigApkORBHu3Z2jO4AH8ccflTz0qK3AFtEAAAEHAQoBx/dPT6UgJaKKKYBRRRQAUUUUAFFFFABV20/1R/3qpVdtP9Uf96pewFU/8fU/+8P5ClpD/wAfU/8AvD+QpaEMpXmsaZp8yQ3moWtvLJyiSyqpb6AmrteReOvAuv6r4snvrG3Fzb3ATDeYq+XhQpBBI9M8eteoaPZy6fotjZzSCSWCBI3cfxEKATW04RjFNO7ZrOEYxTTu2XaKKKyMjMstf0/UNYvNLtJfNns0VpmXBRSxI259RtOfT65rUg/4/l/3G/mK5uzhig8fX0cMaRoNKt8KigAZmnJ4FdJB/wAfy/7jfzFJ7AX6KKKkAooooAKKKKACiiigAooooAy6KKKsQUUUUwCiiigAooooAiUj7VIMjOxeNxz1PboPr3/CpajBP2hxk42rxkY6nt1qSkAUUUUwCiiigAooooAKKKKACiiigAooooAKityDGcEH526MW/iPr/LtUtRwklDkk/M3Ug9z6UgJKKKKYBRRRQAUUUUAFFFSiElck4JqJTjBXkwsRUVw3jb4p6L4H1OHTbyC6ubp0Ejpbhf3ak4BJJHJweP5cVzfxI+KV3p3hXRL/wAMOoTVg7i6dAxiCYyu05G7JI5z90/WquB67RXBfCXxhqXjLwrNdaoqG5trgwGVF2iUbVOSOmeeccV3tABVCbVNPa/Gmi+tTffK/wBm88CTGQc7Rz/n0q+elfMs/wAMvG5+IbSi3mG6+89dT3LsA8zIfOevfb1oYH0tOjSW8qI+x2QhWxnaSODXzf4P+GHjXT/iFYT3FpJbRWl0JZr3zAUdAcnac5bcMj/gXOK+kyQi5ZgAByTxTILiG5iEtvNHNGejxuGB/EUAOkijmieKVFeNwVZGGQw9CKqwaRpttYNYQafaxWbZDW6QqIznrlcYqxPPDa28lxcSpFDEpeSR2Cqqjkkk9BWXovirQvEbSro+qW940JxIsbcr74POPfpQBNd3OmeGNCnunSKz0+zjLssSBVUDsFHc+ncmvH9Y+PV1p3jCeyj0iFtLtp2gl3MfOfaSCwOcD2GD9RXV6z4/8E+Jry88FXV5MftebUzpH+78zdgBW9Q2MHGOOtYepfDrQPB+lXninxIF1meyCugSNoRO+QF80bmDEkrk4APJIJJyhk/x2vPEFv4e06TSZLmLTmdzeSW5KkcDYGI5C8t7Zx7V5VqPhPxZ4k1e11PT9Ov7qC+SNrW4wcIqqAFZj93bjGTjOMjOc1658Ofi5J4016XR77TYrWRo2lgeJywIXHykHvjnPt0rh/iv418WaV8Q5rS11G7sbW1EbWscRKrICoJYjo/zZHORxj1oAf4i+C/ivUfGDyxPbzW12VklvWlACsQN5Zeud2SAMjp07dd4m+LfheHUbnwlqWn3V9p6g2l7c5GNw4bA6nB6kYORxnivS9Buby88PabdajF5N7LbRvPHt27XKgsMHpz2rz/Wvgdoes+K5dYa+uYYLiUzXFogGHcnJ2t1UE8nr1OMdiwDLfSvAPwclGrS3V29zfKUgMh819nBIQKAMdOT+fNd3p1/oXjLRob63W31Cxdsp50QOGBxyrDgiuN+KPwwuPGwsLnS7qC3urSMw+XPkI6ZyOQDgjntzn2rf+Hng0eCPDQ05rkXE8khlmdRhdx4wB6AAD360xHVgBQAAAB2FBZQQCwBPQE0Pu2Nsxuxxn1r5R8ZaV4xvNdhnurPU55o4YxuVGby5Qo8zp935wzD1BBHGKAPqpSPtUgyM7F43HPU9ug+vf8ACpaxvCxvT4d0z+0ZGkvBZQ+excNufHJ4659ehrZoAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAB6VFbkG2iIII2DBDFh09TyfrUtRwEmCMkknaMkkE/mOKQElFFFMAooooAKKKKACiiigAq7af6o/71Uqu2n+qP8AvVL2Aqn/AI+p/wDeH8hS0h/4+p/94fyFLQhhRXOav4sj0zUWtFtTMUxvbftxkZ44OeDW/bzpc20U8edkqB1z1wRmpjUjJtLob1MNVpwjOasnsSUUUhyFOBk9hVmAtLB/x/L/ALjfzFcna3es2WvaTZ3+oJdT30cj3NqkShbYKuQyEANtDYT5s5zniusg/wCP5f8Acb+YpMC/RRRUgFFFFABRRRQAUUUUAFFFFAGXRRRViCiiimAUUUUAFFFFAEaj/SXOP4F52+579/p/jUlRLj7VJ0zsXsc9T+FS0gCiiimAUUUUAFFFFABRRRQAUVBcXtta58+eNCEL7S3O0dSB1NZ1h4l06/kkRXaEopbMwCggdSDmoc4p2bNo4erOLnGLsjYoqhNremQW6zveRGNm2gqd2T9BVyKWOeJZYnV42GVZTkGmpJ6JkypTiryi0h9RwDEZ4x87fw7e5/znvXO+LtRvbFLZLWRokk3bnXqSMcZ7Ve8M3dzeaMstyPm3sA+Mbx6/nkfhUKqnPkN5YOccOsRdWZsUVTudWsLOdYLi6jjkbopPT6+n41cq009Ec8oSik2rJhRRRVEBRRRQAVMsy7RkHNQ0VnOnGorSGnY84+IPwltfHOsxasmpPYXQQRy/uRIsijODjIwecZyegrzPx/4kPhS5h8CWGmWU+kaUqEi+h81riRl3s+eNud5+7g5zzjivpOsPWvB3h7xFeQXeraTb3VxBgJI45wOcHH3h7HI5qrCG+CmtJfBmk3Fjp8WnwXFskwtolwqFhk49eec9+tb1NjjSKNY40VEQBVVRgADsKdTAKjnGYxxn51/h3dx/nPapKiuMeWM4++vUE/xD0oA81+OGq2dr4Rt9Oub+4tjeT5MdvEHaVEGSDlgAMlOc+nBrF+AmmyQDVr6zv2n0iUJGI5E2Osw5OVyQMKRyCQQw7ggdt8Qvh5aePrG2jku3s7u1ZjDOqbxhsbgVyMjgd+1XPAngq18DaCdNt7h7mSSQzTTOu3cxAHA7DAHGTQMm8c+H5/FPg3UdGtrgQT3CL5btnblWDAHHY4wfrXm3wk+GWv8AhjxJcatrKx20YgeBIklDNJkjk4428fWvTtb8YeHvDlzBbavqtvaTz42RuSTgnG4gdBweTxWzFLHPCk0MiyROoZHQ5DA9CD3FAj5s8W/D/SPh94itdT1LU5J9OluTLbWUEX79wrBirEkAKMgFsk89PT1/SfG3hT4haWunSbsaissRs7ldrMUALqCOMgMrDBzg5HQ4g+KXg/RvFOlWkmqaxFpMttIVguZSNhL4yhBIznaMc54rwvRfE8Ph/wAW6fb22kRPZ2F+TGHD/aGYkIzkhvvkKPlxt7Y70hn0J4S+G3h7wZez3mmRTtcygp5s8m4ohIO0cAY4Hv71yXxY+JU/hHWrHTrDS7K4uxELkz3kW8ICSoCYIIPynJzXSeMPiloHgvUodPvku57p0EjR2yA+Wp6FskdeeBz+YrnvG3hG5+IL6br2hDS9RsZ7ddqXrSRMnP3lZCCQehU9CvHJNMDjPiN4n8Q+LfBnh/WrOC5t9NnSVbuO2LFRMr7fmI/hOMrn1PevUfhGdePgK3Ov+f53mv5H2jPm+Txjdnnrux7YroPCeiv4f8MWWlymAyQod4gTbGCSThQeSBnGTycZPJNWPEKahJ4c1NNKJGotayC2IIB8zaduM8dcUAaIIJIBHHX2pa+bfhDp3iyD4jJLLb6jDbfvDqLXCuqt8pxu3dW3EY79e2a+kqEIKhntLa6MZuLeKYxtuTzEDbT6jPQ1NRQBGoxcOccbF52+579/p/jUlRLj7VJ0zsXsc9T+FS0AFFFFMAooooAKKKKACiiigAooooAKKKKADtUcAxbxjGPlHG3b29O1SHpUVtj7NFjGNgxgEDp780gJaKKKYBRRRQAUUUUAFFFFABV20/1R/wB6qVXbT/VH/eqXsBVP/H1P/vD+QpaQ/wDH1P8A7w/kKWhDMbUvDFhqd59qlMqSEAN5bABseuRWtFEkEKRRrtRFCqB2A6U+ikoRTukazrVJxUJO6WwU2TeI28sKXwdoY4Ge2adRVGRyvhrStc068kn1S306a5umLXd8l47SHAO1VQxABRwAu7jk8nr1cH/H8v8AuN/MVUt9SsLu5lt7a9tpp4eJYo5VZk/3gDkfjVuD/j+X/cb+YpPYC/RRRUgFFFFABRRRQBXv47mbT7iKznWC6eNlimZdwjYjhsd8HnFee31zdWWu/wBj6Vq2oTWkrQWl7cy3BlaGZ5BkIzZ2uYw+QOFyvANd/qdtc3mmXNtZ3Zs7iWMpHcBN5iJH3gMjJH1rm7TwdfQaMmlvqdmsEBWa3e2sGjkSdXDCRi0rb8kHcCOc9RQBd8PtLaa1rGjtc3Fxb2vkzQNcSGR1WRWypY8kAoSM5PNdFWVo2kS6fLeXV5di7vrx1aWVYvLUBRhVVcnAAz1JOSa1aAMfzlJAw/JA+4e/4Un2hMZxJ0B/1bdzj0qWirERGdADxJxuPEbduvb8vXtS+cu7bh87tv3D6Z/yfXjrUlFAEQnQgHEnIU8xt36dvz9O9H2hAM4k6E/6tuxx6VLRQBGZlBIw/BI+4ewz6UCZSQMPyQPuHuM+lSUUAVluENw/3/8AVocYbPJI+7jj/PpUhnQAnEnAY8Rt269vy9e1KM+e/wB7G0Y6Y7/j/ke9SUAR+cu7bh87tv3D6Z/yfXjrSCdCBxJztPMbd+nb8/TvUtFAEX2hMZxJ0J/1bdjj0pTOgJGH4JH3D2/CpKKAIxMpIGH5IH3D3GfSsm48U6ba35tJDKSp2u4X5VPvznj6VtVzV54Phu9Te5F0yRyPveMJk5PJwc/0rKq6iS5DswccM5P6w7K2h0BuEAJxJgBjxGx6de35eval85d23D53bfuH0z/k/h1qQAAAAYA4AorU4zjNR0fUJ9dluY4WntrkYJLBSqkYwc9CP6fhSf8ACKyW1vO9vcGadkKorRFBgnB5PfGR+Oa7TIyBkZPQVxfibWtStNYMEErQRIqsm0ffyOp9ecj04rkq06cE5M9vCYrFYiSpU2lZffb+uhWj8Maj/ZskbqiSvKrbCScBQc8gEfxfpXV6Nbf2bpkFm7M7qeSEbGWy3HHT3qo3ia3s7e0F7HMJpY1Z9icKSM9z+OBV3UNas9Os4rmV2dJeYxGMlhjOR7VVONKHvJmWKqYyvanOOjelupFrOpwWWmNNJb+cDtCxyIQCTnGcj2P+TVTw9r41GKaOWHy3hXf+7ywK57Dk8elXoJ7DxHpjfIzwsdro/DKRz2/DpTtK0q00yJxbROhc4ZnbLNgnH4VdpSmpRehhejToSpVIv2lzntb8OXd/rEtxbupSRgDvBG0hR7cj6fSuntdlvaQQAyN5caIGMbDPGAentz6d6tUVUKUYtyXUyrYupWpxpz2iRfaExnEnTP8Aq29celKZ0GeH4z/Ae34f/rqSitDlIxMpbGH6gfcPcZ9KQXCEA4k5AP8Aq27nA7f/AKu9S0UARG4QAnEnAY/6tuxwe35eval85d2MPnJH3D6Z9KkooAjE6HHD84/gPfp2/wD1Un2hMZxJ0z/q29celS0UAR+cuSMPxn+A9vw//XXl83xv03/hLn0O20ueaMSNAlyJQN8oyAAv90tgZz36V6pXl8vwP0CbxWdYa7uRA0/ntZjG0tu3Yz1C57fqKGBwfgn4seMNV8fWFrdzi7tb248t7RIVURqe6kDI2jnkngHPrXv99qFraWrT3MwghQ7mklYxqoVuSWP5+49qjttA0ez1GXUbXSrKG9lz5lxHAqyNnk5YDPNc58T/AAvqHivwfNY6ZKBcqwcRM21ZcEHaT+HHvQB0Wm+INJ1mJpdL1C3vY1O1mt33hTjPOOn41dFwjAFQ5zjHyHv07f8A6q+a7X4d+OPDvgzXLoWs8Ul0I4Gs7eXfI0Ybcz4QnPQLj0Zu3XtPgHYeILKy1T+0YbqDTWKfZo7hWX5+dxQHtjGT3OPQ0XGeZ+I47zx14xeZ54bbV5phbTWNwzKYnU7AE4OVwBwOc7uMcn6W8L6cfD3hbTdJllknks7cRvJsYgleuOOnYewFZfjfVtJ8FaTP4ofSoLi/BWGNgoV3ZjwC2DgYBP4Vi/DL4pN46uruwvbGO1vYI/OUxMSkiZweD0IyvfnNIDnPj3plzqY0aWCWNI4fNQrcSCFGZtp4Z8LnA6E5PYHDY0vhb4S0+502HxDrllbXmsif91dIpdccANlfkdgwJMgzz1ORmue+Mdn40PjOK40xNTl097dY4BZK7Kp/iVgvcnnnqMenHrvguDVrbwbpUOuOW1FYAJixyw9Ax7sBgE+uaOoHzl8Qb6y17x7qf9pR3djfQ3LWwW2txKJkVtqNhnUhiuOmQeOnf2PxF4gt/hL8PNOttOtGuZFYW0KzZUbtpZnb157Dua0viFq+h+DtOTxNdaJaXupiRYLZ2iUSFiCfv4JAADGvFNb8dR+Lre91bV7W4nijMUJ0sT7YUJDbZo2xlSCCCMEnf1xwAD2L4ZfEZvHWn3Yu7MW99aOiyeTlkcPnaR3H3TkH255ruvtCYztk6Z/1beuPSvO/grPoN14Qmk0XTHsZFuCl0JJfNZ3ABB34GRgjjAwc8dzy/wAZPGupSG50XRJbi3XTplGoPC5VyGQMhyOdnJB98Z6jLEe2m4UA5EnG7+Bu3Xt+Xr2o85d23D53bfuH0z/k/h1rzb4IXuvX3g6eTWZLiWEXGLOW4JLsmBnBPVQeh+o7V6bQBEJ0IBAk5CnmNu/Tt+fp3o+0IATiTgE/6tuxx6VLRQBWE6C6kX58hRxyfU9McfXv07VKJ0JAw/JA+4e/4V8+fGrxD4q07xqlvBe3tjp4hRrX7NK0YlP8RJU8kHjHYY9efXfAXiGbWvDtpHqcqDWIol+0xkgO3A+Yr254PHDBh2xRcDpftCYziToD/q27nHpQZ0APEnG48Rt269vy9e1S0UAR+cu7bh87tv3D6Z/yfXjrSCdCAcSchTzG3fp2/P071LRQBF9oQDOJOhP+rbscelKZlBIw/BI+4ewz6VJRQBGJlJAw/JA+4e4z6Un2hCM4k6A/6tu5x6VLRQBEZ0AJxJwGPEbduvb8vXtS+cu7bh87tv3D6Z/yfXjrUlFAEQnQgcSc7TzG3fp2/P070faExnEnQn/Vt2OPSpaKAIzOgyMPxkfcPb8Kjt50aCLG85VRnBbqM/exz9asUyHPkR7t2dozuxn8ccflQA37QhAOJOQD/q27nHpQZ0AJIk4DHiNu3Xt+Xr2qWigCPzl3bcPndt+4fTP+T+HWkE6HHEnO3/lm3fp2/P071LRQBF9oTGcSdM/6tvXHpSmdBnh+M/wHt+H/AOupKKAIxMpIGH5IH3D3GfSkFwhAOJOQD/q27nHp/wDqqWigCI3CAE4k4DHiNuxwe35evatCyYNG4GflfByCOw/OqlXbT/VH/epPYCqf+Pqf/eH8hS0h/wCPqf8A3h/IUtCGTLwox6VG+A5xSAkdCRSVlCk4ycr3uO4UjEKjFjhQMk+gpaK2EcXFbw2fijw9PZi0bSJoZILBbZdrLmPzCztk71IQ+mCRnJ5rtYP+P5f9xv5isqx8OaTpt39qtLQRygMFzIzLGGOSEUkhAf8AZArVg/4/l/3G/mKTAv0UUVIBRRRQAUUUUAFFFFABRRRQBl0UUVYgooopgFFFFABRRRQBEoH2pzgZ2Lzswep/i7/Tt+NS1EuPtUnIzsX+I56nt0/z7VLSAKKKKYBRRUc88VrA88zhI0GWY9qTdhpNuyJKKzdN1yx1WR47Z3EijO11wSPUVB4nnu7bRmksyytvAd06qvPPtziodRcrktTeOGqOsqMtG+5s0Vy/hC9vJrW7e8md7ePBWSU5x13cnt0+lW5/FVgLaZ7Qm4ljGfLwVyO5yR0H5/zqY1ouPM9DWpgasarpRV7dVtqc9q+lavL4hlkSGaQvJuilQHAGfl+btiuxvpbWGFDdvbCYA+UZsAb8dRn3xWPH4xt47eJru2kSWQbtsRDYXsTnGM+n+NVvEOk3OtyW1/p+2aJ4goG4KRyTnn61gnGKbhq2ejONSrOnDELkjG6v3Mewi1G91VoLkzFXz9pMucKuOSc9MdvfFac82k6+LXS4JJ4XgGyCV0BDADGDz3wKmm1b/hHLC30maD7VL5RMvz4UBiflHHPFUbHRIrqzu5dPuHaZ4R5cUihSAW5+bPP3WXoPyNZJW91a9zslPm/ez91L4Wtu13/weh0+hadb6ZYtFBcLcFnJeRcYz6cdKjn1qzs3ls0kRrwbykSxkAsckA+5/n6Vxl19v0iO3iTzrXem5iuVLtk5ye+OmPx71qJ4Yu9UaC+eaOEzKHmzncG7kD1PXqOSa1jVlblhHY5KmCpKftsRUun+f9dhPD+t6nda5HFLO00cpO9SBhRg8j0ruKhjS2hmKIIlmcZPTewHc9zU1dFKDirN3PMxteFaalCHKrBRRXD6p4vvry1uLbRkjtrtwVtp5hvG7tleMZ6dTjOcHpVTqRha/Uyo4arWTdNXtudxRXm/wh8ean400y/TVokNzZOg+0RptWQMDwR03Dac49RxXpFUYBRSO6xozuQqqCST2ArCsPFdnf6gLRYpI95xG7Ywx9/SplOMWk3ubU8PUqxcoK6W5ukgAkkADua4D4jeIbmf4fanc+EtQiubiF1S4lsZRI8KZ+YjbnB9+wye2a1fiNpWqa14KvrDSXK3Eq4IBwWXuv49Px9q8z+DPgXxNofiq41PU7OSxsxbvCyyEZmYkYAAPQYzn8u9UzIs/AbVvEmo3Oprf3F1daUqArLcuz7Zc/dUn2ySO3Hrz7dSBQowoAHoKWgQVU1K5t7KwluruWOK3gxJJJIMqqggkn/HtVusDxpoK+KPCN/o5uPINyqhJewYMCufbIAoAZ4c8deHPFk80GjaktxNCu542Ro225xkBgMj3HTI9a6KvlfxR4Y8SfDTSbFFmMD3byGe9sJGG4jG2MvgEDALY7knrtGPbfhHqWs6l4Ft5dbeSScOwikmJMkkX8LNnn1we4ANFwOq13RNP8RaPPpmqQedaTAblBIOQcggjoQRXzf4M8eW3g/xYbXR9FQWFzcLBM9wzPdMm7A5GFBGc7QvPQk8EfUNcn/wrfwuPE39vjTUF95nm5ydu/8Avbemc85xnPNDA6yq9/exadp1zfT58m3iaV9oydqjJx+VWKR0WRGR1DKwIII4I9KAPArT4nW3xJ1hPC3iHRIU0zUJQlvJDI3mwSc7Wz3OeOAOvORkVt+Lfhx4T8G/DXUpfs17dmOWKbe0+Hd92xASAAFHmHOB39cEdhofwt8K+Hte/tjT7KRblSTEHlLJDkEHaD9e+faurvrG11Oxnsr2FJ7adCkkbjIYGiwzxD4KeObZLu48PPpdnYW8n7+OW3aTmQsqYbezE5yoByMY969L1r4c+H9d8QRa5PHcwX64Dy2tw0RlAGAGK89OMjBx3qhovwq0PQtaW+swY4UcSJbqCdzDpvZixIBwQBtGQCQSBju6EIaiLHGqIMKowB7U6iimAUUUUAZGv6Y+rabe2sJVLkwH7PI29AkmDgllIJGcZA/rXjnw+8C+Nrf4jWusa3a/ZLazV1Zt6BWUqQERUOMZbPQDqete6rj7VJyM7F/iOep7dP8APtUtKwBRRRTAKKKKACiiigAooooAKKKKACiiigAPSo7cAW0QAAAQcBNgHH93t9KkPSorfBtosEEbBjDFh09TyaQEtFFFMAooooAKKKKACiiigAq7af6o/wC9VKrtp/qj/vVL2ASW0WSQyB3Rj1245pn2H/p4l/T/AAq3RUjKn2H/AKeJf0/wo+w/9PEv6f4VbooAqfYf+niX9P8ACj7D/wBPEv6f4VbooAqfYf8Ap4l/T/CpIbVYXL7mdyMZbsKnooAKKKKACiiigAooooAKKKKACiiigDLoooqxBRRRTAKKKKACiiigCME/aHGTjavGRjqe3WpKjUH7Q5wcbV52+57/AOf1qSkAUUUUwCquo2Sajp81o7FRIPvDsQcg/mKtUUmk1ZlQk4SUo7o57QvDR0m7e5luFkfaVUKMAA9zXQ0Vy2u+KLnTtTa0toYiIwC7SAnJIzxgjjmsnyUY+R2JV8fV7u3oaHiJLprKP7PHJJFuZZo4hlirKRkDvjOcfSsbRPCzM7XF1IwiZGRUClXO4EEkEccH3rq7K5F5YwXIUp5qB9p7Zqsdb00X/wBiN0vn7tu3Bxu9M4xmplTg5Kcma0sTiIU5UKcdVu1/X4nM69pGlWLWyvfTRybApXyxIzKOhPTHp+H1roEv9P0zRrf7PJ5kfksYV7ybQSfp71V1/wAONq9zHcQzrHIq7GDjgjJOeO/NRyeH459PtIbG+QzWRYb+GVixyQQM4+nPpWfLKEpcqOh1aNejTVWo3Z6+W/l3MS3uk8T6xFDfwqjspCyQEgjAJwc5BHX3rr9M0mPTd5Vy7OAvTAVRnAA59STzyaZpeiWumgSCKP7SRh5FBA/AEnFchqMWrx+IpZsTLIJSUlOdoTPBz0C4/wDr0knSSlJXbLbjjJOlRlywS2fX/gHZ/wBs6a1/9i+1IbgNt2kHG70zjGatwklDkk/M3Vge59K5KPwlK+qrcx3MJsmk81WRiWK5yAP8c1t6nrEWjWQlkjZ5JJGCRgBc8k5+nv3zW0KkrOU1Y4a+GpucKeHfM3+ZyetXl9Za9MsbvGQ4ZcD7/cE+v49Onau/haR4I2lTZIyAuvoccis/R9Vt9at/PWLZLE21lbBK59D6Vp0qMLXkndMeOruajSlDllHcKw4/Cmlx3ZuAsvOSI9+FU+2Of1rcoraUIy3Rx061SmmoO19zP0bQtL8PWAsdJsorS3B3FIx94+pPUngcn0rQoopmQ10WRGRwGVgQQe4NYVh4UtLDUBdiaSTYcxowHB9z3/St+iplCMmm1sbU8RVpRcYOye4UUUVZiFFFFAHmXxvj12XwbCujLcND5/8Api2+7cY9pxnH8Oev4Vn/AAOj8Qw+Gr0aoLlNP8+P7Es5KsP7+3d/B93pxnOOa9dqOYZjGAT8y9Fz3H+falYDm/iDpetav4Pubbw/dPBqSsskeyTYZAp5Td2yP5c8VxPwi8I+LdI1zVNY8SvcRm4hWLy55xI8zAghiQT90AgZ/vGvXqKLAFFcr438Z/8ACI2lv5Gnvf3lwWKRCQRoiLjc7uRhVG5Rk9yK8t8c/GHxFDYaR/ZVumlPdRNNLKrJcgkOyhUfBUjC5JA/iHTuXA97JCqWYgADJJ7VkaT4r0DXbuW10rV7O8niGXjhkBOPUeo5HI4rl/D2q33j/wCD9zNfFba7u7W4t2mRCFOAy7wPT1x3BxXinw5S38PePtJv7vUbd1abyYY7SQSNKZBsBIH3FG7J3YPHT0LjPquvG/ib8W9X8KeKF0fSLS1IijWSaS5Rm3lucLgjjHf19Mc+yVzniLwH4b8V3UNzrGnLPPCNqyK7ISOuCVIyPY+poYiz4S17/hJ/Cun6yYDA11FuaM/wsCQce2Qce1bVRW1tBZ2sVrbRJFBCgSONBhVUDAAHpUtABRRRTAKKKKAIwT9ocZONq8ZGOp7dakqNQftDnBxtXnb7nv8A5/WpKQBRRRTAKKKKACiiigAooooAKKKKACiiigA7VHASbeMkknaOSQT+Y61J2qOAYt4wQQdo4K7e3p2pASUUUUwCiiigAooooAKKKKACrtp/qj/vVSq7af6o/wC9UvYCeiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFNkdYo2kdgqKCzE9gK5aHxxBdWeoXFvYXDG3u4rO2jf8AdtcvIEKHDD5VO8HJ/h59qAOrorK0fV5dQlvLW8tBaX1m6rLEsvmKQwyrK2BkEZ6gHINatAGXRRRViCiiimAUUUUAFFFFAES4+1SdM7F7HPU9+lS1Ep/0lxkfcXjfnuf4e317/hUtIArz24n1lfEb4eYTiU7Vydu3P/oNehUhRWYMVBI6EjpWVWnz21sduDxSw7leN7oWisWPxNaT3EkUEM8ioSBLgBC3YZzxmm6R4i/tK+ks5rRraZQSAWznHUHgYNNVoXSuTLBV1FycdFqblYviCLSIoVvdStvNZSETaSGb24I9+tbVc54h0m7vrlWiiM0DoqsquFZGUthhngjDHiitfk0Vx4Hl9suaXKvW34mho2sWuqW7G3jMPk4DRsAAo7Yxxjj9K5lfDkd3rDtDqMD2xkLkqx3Y6kZxjP4+9aq+GntPD95bWsjNdXCqWLHbnBztHpxkde9Ytlo2p2VpezSWch3RGJY15Yk8ZwOwGfz+tc1TmaipxPVwypQdSVCpa7sk/wA9fM7LVYJrvSrmG2bEskZCnPX2/Hp+NcTYXNxo+pvFZWJnliGyc4Ylv73Q4Az0OKu2V9e+HNA3TwHfNKRBFLkbRjkkdeuOOPWq97c3XiDTDNbWuJI5B9pSFSfM4+VvU4wRjmlUmpWktGVhKEqSlTlZ029/8/y9TovE1xdx6GJrIyIWZS5XhlQgn8OcVyUMF3qWnFp5XOJQI5JQzZGDuGQDwMA89Oa6vwna3lppTLdq6BpCY0fgqMc8due3+NS+JrK6v9IMVplnDhmQHG9Rnj88H8KudNzj7Ty2McPiYYep9WVt/i/r7tx3h1n/ALKERUhIm2RsT98YBz+ZNOvdJttWsvJmyu2RmV4xgg5Oev61n+EdOvLCC5a7RokkKlEY88Zycdu1bFrf2sscvlXEcrR7mZY5d5xkn/P5VrTs6aUjixKlDFSnRd7PdeY3StJt9ItjDAWbcdzO/Umr1chpvi65u9Wiglt4hDM+wBAdy56c55963tdvZtP0ea5gAMi4AJGQuTjNOFSHI3HZCxGFxCrqNX4pDNY1230ZYxIjSSSZKopA4Hcmuf1jxVcsttJpr+VC6ksWQFtwOCpzkccH8araek/iuV4b2VvMgTck6oOASPlIGM+o/HrXV2uh2FtYx2rQJOqEtulQMST1P6D8qxvUq35XZHY4YXBcqqx5prft+OhJo95Jf6Tb3UyBZHU7gOhwSM/jjNXqRVCKFUBVAwABgAUtdUU0kmePUkpTcoqyfQKKK8z+K3xLvvA8lhZ6ZaQS3VyrStJcBiioDjAAIySc9+Me9Mg9Mork/h34wbxt4VTU5rcW9ykjQzImdhcAHK57EEfTkc11lABRXz38X/HHivSPHJsLO9uNPs7eOOS3EXAmyMlz/e5yuDx8vSva/CV9fan4R0m+1KPy72e2R5lxj5iOuO2euO2aLgbNRXGPLGcffXqCf4h6VLUU5xGOQPnXq+3uO/8ATv0oAlorhviH8S7PwELWFrJ729uQXWFZAgVAcZZsHGe3HY1t+D/Fdl4y8PxatZI8asxjkifG6Nx1Bx16gg+hFAHDfHTT7jVNA062tZEWRJ2lZZWEaMoGOZGwoOWGFJGecZxWX8IvAsUuh6nb+JrO0u4xcI0VnLtkMDbAS2QTtLApx3CjNP8Ajh4P8R+IL3Tb3Sraa+tIYmja3iwWjct97HU5GBx0212nws8P6l4b8DW1lqy7Lwu7mPIJjUnhSR19fxx2pdRnXW1rb2drHa20EcNvGu1Io1Cqo9ABwBXJaf8ACzwlpfiAazaadsuFcuieYTGjHuq9B1/DtiuzopiEJABJOAOSa810z43eHNU8UxaNFb3aRzTCCG8ZRsdycDjOQCcYPvyBXpRAZSpGQRgivKtK+BekaX4ti1ddRnktLeYTwWZQAq4OQC+eQD2wD6mgD1aiiimAUUUUAFFFFAES4+1SdM7F7HPU9+lS1Ep/0lxkfcXjfnuf4e317/hUtIAooopgFFFFABRRRQAUUUUAFFFFABRRRQAHpUVvgW0WMY2DGAQOnoealPSo7c5tojkHKDkPuzx69/rSAkooopgFFFFABRRRQAUUUUAFXbT/AFR/3qpVdtP9Uf8AeqXsBPRRRUjCiiigAooooAKKKKACiiigAooooAKKKKACuE1DTr7+0dbvY7OeQQazZ3iIqHM0aQRK+zP3iPm6d1x1ru6KAOd8PrLd61rGsNbXFvBdeTFAtxGY3ZY1bLFTyAS5Azg8V0VFFAGP5Kgg5fgg/fPb8aT7OmMZk6Af6xuxz61LRViIjAhB5k53DiRu/Xv+Xp2pfJXduy+d27759Mf5Hrz1qSigCIQIABmTgKOZG7dO/wCfr3o+zoRjMnQj/WN3OfWpaKAIzCpJOX5JP3z3GPWgQqCDl+CD989hj1qSigCusA85hmbbsUDMnHBJ9c59c+3vTzAhBGZOQw4kbv17/l6dqFA+1OcDOxedmO5/i7/Tt+NS0AV7hoLWJ7meRkjQ72YucDjHT+nr71U03UdP1MstrNIzRhcq7MDgdDyeff171PqlgNS06a0L7PMAw2M4IOR/KuLV38JX+3ak900fzHJ2BSeg75461hVqShJdj0sJhaeIpSSf7zoixr/h25gaBbCGSa2APyqMlWLE8j6YGfat7Q9GFpaxTXKn7aYvLY7vurkkDjvjA/CtDTr1NR0+G7RSokGdp7EHBH5irVEKMFLnQsRjq8qfsJ6Nb9zK1XU7PRo43n853dvkRGJJwOvJxjkfWpdNurXVLMT27TbRhCGc5Ug555//AFiqGt2mna1PFaHUI4ryIkKAQ3XqCPXj1rR0jS4tIshbRuXJbc7kY3H6dulNObqP+UidOhHDJu/tH+RleJtTm0mOBbYHfNvy7MTtHGcDPXn8O1WvD98+racbiZSsqylW2sQrHaOcZ9D06Z5rlNRvNVfXpoWeVj5pVYGJ2Fc8DHTGK9AggitYVhgjWONeiqOBUUpSnUbvodOLo06GGhBpOT1ujkNX12wku5NPuLKSa3icIzmY7gV4yB69fr3rU+1aFoRFiJXiJ5baWJGccsR34H+TUlx4d0m71Rp3J84ne8KuMMfUjrWR4psfsE76lGA7XDhcuoIjwOevrj8MGol7SF5uzNqf1avyUI8yVtr7vT182RzeINQ/ta7iicLGgk8uPGd2AcHJ9ueOOKd4Y1XUb7VvInlkniILtk/cI6Hjt2x05qhb3U13ZbsQre7xHBLsVWfAHAOOCBjn3AovP7Ws9KhdzLEkrsXdDjcRjGSv49evNYqpK/NdndLDUnB0lGKb0/4Pn/mdveWX2jT7i3idleSExqWckfj/AFPWua8PeHb+01M3F0PJjRWX5ZBl8jHY8ev4CqbeIdWsdOtI2fErZfdIuWZM/LnP/AvwxXYaRcG80uC5MQjMgLMqjAzk5P4nn8a6E4VZp9UeZUhiMFQlHRxk7DYNE062uzcw2qpMc/MCeM9cDOB+FWTbRMhVtzKQAQzkggeuTz7+vepqzddvYLLSJ2n37ZVMQCdSWB6eneuh8sItnnRdSvUim23sMsbjRpZZLWwliVx95Icpu9xjAP1FaJgQ55fnP8Z7/j/+quJ8LWENzqi3cEjotvy8T8tyCBgjGR1zwP1ruqihNyjdo3zCjCjW5YtvTW+9yMQqGzl+oP3z2GPWkFugAGZOAB/rG7HI7/8A6+9S0VqcJEbdCCMychh/rG7nJ7/l6dqxvEfgzQfFkMcWs2X2jynLxt5jKyEgAgEHIBwOOnFb1FAGdpOhadoWmw6fplv9mtYfuRo7YHJOTk8kk85696ufZ0xjMnTH+sb1z61LRQBTudKsb0obq1jnaNi8ZlXcUY91J6H6dKsCFQQcvwQfvn0xUlFAEQt0AAzJwFH+sbscjv8An6968W+MnjrxH4Y8QWWm6PctZ27W/ntLsDmRi7ZGWBGBgcD19MV7dWdrGj6bq8Maalp1reLG4KC4txLtyQDgHpx3oA8L8Yahp+v/AAt0HxT4htZJtbLtAiRSeWsoJcBnHJCERk4XHJOMZrqPgf4jsNS0O70qPTotOks5VkPkyvsmL7jn5iTn5ehJ4A9OMD4meF9XTxldXVkun3ul3FrH5lnPdRxC3SMYHyl1KgEFgy/3mB4JB5y+0W+fwxfQeFbMXGnu1u7zabvlM2EYTKzH5sh2XCkD5cMBgsShn0yIIyowzkYxkSN659acYEOeZOd38bd+vf8A/V2ryb4D6d4g0/R9TGqwXVvYNIn2SK4UqQ2DvKqeQDlfYn8a9dpiOG8X/Erw74OaJbh7i8uXkI8m1fcUKjB3ZYAdenr24ON3wxrmmeKtCt9W0ySY28mF2yOQ6Mp+6wyefX1GOoryLUfgzreq61PaXM6rafaJZ7fUw4kIR23GORCQSc5OR3J65GPWvBvhS08GeHIdItJGm2sZJZnGDI56nHYdAB6AdaEBtG3QgjMnII/1jdzn1/8A1UphUknL8kn757jHrUlFAEYgQY5fjH8Z7fj/APrpPs6YxmTpj/WN659ai1DUbLSrJ7zULqG1tk+9LM4VRnpya86vvi4bDXrRH0uCfQLqcQR6nbXYkwT3KgcfTPY4JwRQB6UYEOeZOd3/AC0bv17/AJenal8ld27L53bvvn0x/kfj1qSigCIQIAADJwFHMjdunf8AP170fZ0IIzJyCP8AWN3OfWpaKAK4hBuXJMuCAfv8ZOQcc5/p6d6kECAg5fgg/fPb8aRQPtTnAzsXnZjuf4u/07fjUtAEX2dMYzJ0A/1jdjn1oMCEHmTncOJG79e/5enapaKAI/JXduy+d27759Mf5Hrz1pBAgAGZOAo5kbt07/n696looA5fxh4mtfCljC7xS3E85ZYohKy5GQWJPbGR78+lTeE/ENt4r0x7uOKWCWOQpLEZSdpI7H0x06d6zfibZWU/hf7Xd20srW0i7GicKyBjg8kHjpx9Kw/hTqivdXumWti0dosYmMrNuffkDDHAHI6AAY2nrya6FTi6PMlqdSpxdDmS1R6YIVBBy/BB++ewx60n2dAMZk6Af6xuxz61LRXOcpEYEIIzJyGHEjd+vf8AL07Uvkru3ZfO7d98+mP8j1561JRQBEIEAHMnG0cyN26d/wA/XvR9nTGMydCP9Y3c59ahtdU0++nngtL62nmgO2WOKVWaM+jAHirdAEZhU5OX5yfvnv8AjTIIQIYyxl3AKTufnIGOcHH5cVOelR24AtogAAAg4CbMcf3e30oAT7OgAGZOAB/rG7HPrQYEIIJk5DDiRu/Xv+Xp2qWigCPyV3bsvndu++fTH+R+PWkECDHMnG3/AJaN26d/z9e9S0UARfZ0xjMnTH+sb1z60pgQ55fnP8Z7/j/+qpKKAIxCoIOX4IP3z2GPWkFugAGZOAB/rG7HPr/+upaKAIjboQRmTkMOJG7nJ7/l6dq0LJQsbkZ+Z8nJJ7D8qqVdtP8AVH/epPYCeiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBl0UUVYgooopgFFFFABQSAMk4HqaK5jxjZ311DbG2jkliQtvSMEnPGDgde/0/Gs6knCN0rm+GoqtVVNytfqdEuPtT9M7F7nPU9ulS1ieGILq10sRXe5XzuRGPKqegx25B/OtuqhLmimTWpqnUcE726la71C0sY2e5nRAoBK5y2CcDjrXFahML6c3l6Yng3YjLBkdR1CYA5HXn9RWlqOk6iuo6hcRReckq+bE4IyrgYAx1yAWx74rG0rT9Q1Y3Ns2/wAvaSWmztV8jH4/0zXFWnOT5bHu4GjRpQdVS7XfY7nTLiyuLCM6eR9nT5FABG3HY571crL0HSTo9i0LyCSR33sV6DjGBWpXZC/Krnh4hQVWXs3ddziF8J6gNaD718gS7/P384znp13V29ZWp+IbHSrhYJ/MeQjJEag7R75Iqve+LNPs50jCyzBlVyyDAAIyOvfBFYw9lSvZnbWWMxig3DpoVrnwvcz38hXUXWylcu8WTkZOSAOn4101Z8Wt6dNdLbJcjznAKqQRuBGRg/QjitCtKcYK7ic+Jq15csaytbbSxwVhoWrxeIInkjcFJg7z5+Vhnk5759Pel8QajNa69cIiI3ChvMXcHXAIXB6D6d+a6DxVFeTaPttFkb94PMWPqVwe3cZxWX4esANPnuNXtQYIBui86PlQAS2B1I6cdOtckqdn7OPrc9mliVUh9Zq2dtLLff8ArQoarq0RkhhSKeJBAgdIpdigkbjgAY78+tdholvHa6NaxxSNJGU3hmGCQ3zdPxrmGvNC1rUZJ7q3ngKIXLBuJAo/iA6HHp+daCeLrRrd1tbVwYgMI+ANnTIxnp6elVSlGMnKTM8ZSqVKUaVODTWr/wCHMjVri6S9v5LyJZTHMFhWWMEKp3YI9sL06ZPNVL7UdRm+ytHPKIvLUR+V8o3AcjC4GQc/hiprrWdSn1l4X/eoZdgtWAKMM8DHf61s69bRwaXHDZXENmfNb90JQnmDp1HXoOv41lbmUmnsdimqUqcJxV39y0N/TZZJtNt3mYNNsAkwejdwff1FN1PTYdVsjbTZAyGVh1BFZvhXTbjTrCQ3DDMzB1RWDADHXI45/oK3q7oe9TXMj52u/Y4hulLZ6NGZo2iQaPFII2Z5JMb2J9OgFadYMHiywuNSW0VJQrtsSUgYJ6Djrg1vU6bha0OgsVCup81dasKKKK0OYKKKKACiiigAooqOeRobeWVULsiFgg/iIGcUgJKinwIxnGN69SR/EPSvnXwj8WvGOpePrC3upxcWt5dLE9msKgIrHBKkDcNo55J6c19FzEhBgkfMvRgO4oA+Zbr4d+OJfiTIws7hpXvTONRIHlbd+d+7OBx/D17Yrp7oz/CPwXrCxTW0mqanfKotIbhiLOJg5UnaQ2SFYZBHOMHivd6+fvE3w18aTeP9TubK2h1DTtTm3PJcyL5ewnIVwTuGzgArzgcelKwy/wDBDVL7WNav5lZ4oYk/0qETSPHIXyVcB2O1wUIPOCG6DHPuVY3hvwvpHhXTvsek2UdurYaVlyS7epLEn6AnitmmhBRRRTAKKKKAPPvi54WuPE3h61eKVxb6fObm6hQ/NJGFOdnB+cDOM+prxz4d69a3vizTNDudEtW02e8SVIovMLRyqDtfJY7h03Z7D0GK+pOowa57S/AvhjRNXk1XTtGtre9fP7xQfkz12gnC/wDAQKVgOhooopgFFFFAES4+1SdM7F7nPU9ulS1GpP2hxk42rxuGOp7VJSAK8Z174h+I7LxZdwwSLHb21wY1tjECHCnHJxnnrwe/FezVSl0fTZ75b2XT7WS7XBWZolLjHTnGa1pTjFvmVzajOMG+ZXLcbF41YqVLAEg9qdRXN+KvGdh4VECXEUs88wJWKMgYA7knpURi5OyM4xcnaJ0UsUc0TxSorxuCrIwyGB6gioLLTrHTY2jsbOC2RjllhjCAn1OKraFrdp4h0qPULIsI3JUq4AZGHUHFaVDutGDvH3WFU9U1KHSdPlvJ1kdUwAkS7ndicBVHck1crlfiFZ6nfeE5otLV3k3qZI4xl3j5yB+n1GacEnJJjpxUpJMtaB4st9duZbQ2V3Y3UaeZ5N0m0smcbh+n51f1+zutQ8O6lZWM3k3c9rJFDLuI2OVIByORz3rhPhTpGq2T3099azQW+0LEs6FW3E5YqDyBgDPrx6Vs/EjXL3SNAVdNuPKuZJAJCh+dIyCNw9BnAz71pOmvackTWdJe15IHlfwr+Hvi3R/iBb399p81haWgkE7yOAJAVICrgndyQfTjrnFfQ9ef/C3WdW1XT75NRlluIYHUQzScsSc7l3d8cH8a1PiDr994e8PJcaftWaWYReYV3bAQTkA8Z4xzUuk1Pk6kOk1U9n1OsPSorfBtosYxsGMEkdPU8muK+G3ifU/ENpfR6kwla2ZNswQKW3Z4OBjjH6120BJt4ySSdo5LZ7eo61M4OEuVk1IOEuVklFFFSQFFFFABRRRQAUUUUAFXbT/VH/eqlV20/wBUf96pewE9FFFSMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDLoooqxBRRRTAKKKKACuc8XXl3bWcS2kjRqWzK0bYZR/D05APP5V0dYGq6RfzakbqzlQpKqrIjyMhUjoQR7H9TwaxrczhZHbgHTjXUqjVl3KGj6+bHRzPqbSyFpNkJxl3UdeT1AJ65710Wm6lb6rafaLctt3FWVhgqfQ1k3fhqK8tktzO6zR4kMrbnJY8HJJ5HyjHpj3rS0bSY9HsjAkhkZm3O5GMnp0/CopKrFpPY3xcsJUg5w+NvboaFcNqviTVbfW5o438uOKQqsRQEMB69+ev413Nc34o1FdMe2khtbd7p8kTSRhigGOnvzTxF+W6diMscXW5HDmuupDq2s6hDr0drETDGI96pgfvG2kgZ/3vlqh4c1fU7nXEilnkmjk3GRW5CgA8j05xW5plwniPSDLeQoksblPMVR8pwDuXIOOtZeqxJNpLW+k3j3riTdcAPvkZe3TqAT79qwlzX509Nz0KTp8rw8oJS2b6Lzv/AFqaOs+F01W9F0lz5LMAHBTcDjv19Kju/B1tcywulzJGFRUcbQdwUAZ9jgU7whb31vYTLdK6Rlx5SSAgj1OD26frXRVvGnCa5mtzhrYvEYefsoVLqOi2ORTwrd/23HcNNEttG6lSpO7auNox64A5rrqKK0hTjC9jlxGKqYi3P0MbxFrMmj2sTQxq0srEAuPlAHX8aboepnX9NuEu4lBGY32ZAYEfoa1Lyyt7+AwXUQkjJzg8YPqCOlFpZW9hAILWJY4wc4Hc+pPep5J8976GirUFh+RR9++5y1z4ci0e2u7o77iHyyu0NhsE4z07dc+3T0p+HNNstQuLmMfaWXySDJgLsyRx3ySM/rxXeVlXmr2enK0FskctwD/x7xMFOf8AH25PtWUqEItN7HXSzCvVg6aTcn1J7e0stItAxYKkS4M0zZYD0z2HsK4/xDFHqFzFe2t3BJE4K4Zwm0g5PXH94H15rbuWHizw+fshMUqSAlHPGQOmfTB/SuXuXk0iX7AYIm2hWmEq7wzYz+GM44x9aivJcqSXunTl9KSqOcpfvFe6fY3rXxBFpXh6BVRrh1dokJJAbABJ6dAWwPp2rb0TV01m0aYReW6NtdM5+hzUbaZZaxotqksAhQosiCLC+WSMnH51a03TbfSrX7PbBtpO5mY5LH1NbU41E1r7tjhxNTDShK0Wql/1+4yrfwjaW+prdLNIY0YOkJHQg5HPcV0NFFawhGHwo4q2Iq1mnUd7BRRRVmIVV1DU7DSrb7TqN7b2kGQvmXEojXPpkmrVePfG7wZ4h8Sy6Xd6PbveQ26OkluhAZGJB3AE854HtgUgPXopY54UmhkSSJwGR0OQwPQgjrT64n4VeHtW8M+B4bDWGK3BleRYNwbyFJ+7kHHXLf8AAq7agAooopgZtv4e0a01OTUrfSrKK+kyXuEgUSNnrlsZ5q9MCUGAT8y9FB7ipKiuMGMZx99eoJ/iHpSAlooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARqD9oc4ONq87Rjqe9SVEuPtUnTOxexz1PfpUtIAoori/iN4l1Hw9pdv/Z37uSeTaZygbYAM4GeMnH5Zq4Rc5cqLhBzlyo7SvOPiZokuo3NncLZXcsaoU86zi810Oc4ZOMg9jkY5znIqlp/jfX7r4fapfEb7y1lSNboRgfKx5OMYJH07irHww8Sa1q99eWt/NJdW0cQkEsnJRs8Ln3Gev8AdreNOdO8+x0QpTpXn2On8Caa+l+F4oZLV7Yu7SCOU/vMHu/oTjp2GB1BrU13XLDw3o1xqupymK1gA3EKWJJOAAB1JJArRrn/ABp4Vh8ZeGbjRpp2gMhV45lXdsdTkHHcdRj3rnlJybZzSlzSbZT8GfEPQ/HAuF0wzxXEGC8FwoV9p6MMEgj6Hjv1FdZXz54In0X4feJZisU95IQbWa8aQKAu4bmSMDplR1JPHbpXv8txBAUEs0cZc7U3sBuPoM9acqco25luVOlKFrrc8u+K95rVtqNmLea5h04xcNCxVTLuOckd8BcZ/DvVKbwr4u1iy0nV4pH+2m38mXzZdkgUO20tnqCpGe57g5r2LrRWsa7jFJLY1jiXGKSWxzdve2fgvw1ZQa5qKCUAgvgkuxOSFAGSBnHTpitWGbTfEOlCSPyb2xnHRl3K2D0IPcH1rmPiB4OvPFCWc1jNEs1vuUxykgMGxyCM88f5xVSFLj4Z+AZXfZdXstxkAZMaswAHocALntk0uWMopp+82LkjOKafvNnc2dhaadb+RZWsNvFnOyJAoz64HepIARbxggg7RwVx29B0rivAXje78TzXdrf28STQoJFeFSFK5wQQSef89q7S3H+ixBcD5BjCkDp6HkVnOMoytLcyqQlCVpbjxIhkMYdd4GduecfSnV4H/Y/iDSfFi3eoJcRPHc+ZJeEHa4zkkN/FkZ+UcnOMVsW3jTxDb+J9MszcvLnyobi1dQeScEE4yGwRnnhs56Yrd4Z/ZdzoeFf2Xc9kooormOQKKKKACiiigAq7af6o/wC9VKrtp/qj/vVL2AnoooqRhRRRQAUUUUAFFFFABRRRQAVxcd9r+oX2pyWGq24vLG5dP7GmhUK0QJCEv98FwNwbO3nGODXaVyX9u3cfh2e8M8ZuV1hrQMyrxF9u8oDHsnGfx60ATeHPEp1/XdTiTzYora2tt9rMgV7eZmmDq3fOFT1GMEda6esWyuWk8YarAHVoo7K0dQAPvM84PPU8Kv5VtUAFNkkSKNpJHVEQFmZjgADqSadWD42jll8D62kKszmyl+VepG05A/DNAFvSvEGma00iWFyZHjVXKtG8ZKnowDAZU4OGHB9a065eK4trzx5YS2EscsKaRKZGiII2vJEY+nrtfH0NdRQBl0VHtmyMumMjPyH8e9Jtnx/rI84H8B6557+lWIloqIrPg4kjH3sZQ/h37d/X2pcS7vvpt3dNp6Y6dfXn6ce9AElFRBZ8DMkZOFzhD/wLv37envRtnx/rI84P8B6547+lAEtFRlZsnDpjJx8h9OO9AWbIy6YyM/IfTnvQAikfanGRnYvG/Pc/w9vr3/Cparqtx5zZkXGxf4Plzk5xznp6/wCNPKz4OJIwcNjKH/gPft39fagCWsnXDpIgj/tUqFY/JwSx+mOa0sS7vvpt3dNp6Y6dfXn6ce9Y2taBJq01pKZk3RYWRSCAy55x1wev+RWdW/LornVg3BVk5ycV3RcS3tbvQXg05kS3liZY2UHHPHPfr1rB8PeHL6x1YXVztjSIMAFbO/Ix27d+azLaHWI/ESKEmWZZADgEIEz+WzH4V3xWbJxImMnGUP4d6xppVWpNWsd2JlUwcXThJSU9fMkoqMCbIy6YyM/IemOe/rVe8iu5dPuI45V85oSqFRt+bnvnj+ldTdlc8mCUpJN2Laur52srYODg5xVbU2uF0y5a0BNwIzsx1z7e9cj4Z0rVLfVWlaJ7dFRlcyKcMSOBjvzg/hXaYl3ffTG7ptPTHTr68/5zWVObqQ1VjrxNGGFrJRkpLR/8A43wlcalLqrh5JpINp83zGJAPbr3z/Wu2qMCfjMiH7ufkP49+/b096TbPj/WR5x/cPXP19KdKnyRte5GLxKxFTnUbEtecX+nC01WWWW8jMImY+Yr5fIOSMdd3P0z3rr/ABBf3emaW88G0uXChtn3Ae/6Y/EVy+l2MniSOWKR0ieA7xKsYAO7qCBj0zn61hiGpSUEtT0srjKlTlXk7R2Zt2etaLpWLdDMpnbzZCyfcLc4OOnGOBnFa50+yvdstxbwzOrNtZjv43HjP9Og6Vg3Pgwz3YlF6ArYMmY+c45I57n8q6K3imjtxGrqoXeqbkzgZ+XoegH4n2rSkp6xmtDlxk6KcalCbcnuc9ceMvI1V4PsoNtG5Rmz8xwcZHb8K6useTw5Yy6ib14lLl95XnaT6kZ6559PatQLNxmSPtn5D+Pfv+nvVU1NX52Y4qeHko+xjZ21JKgu7yCxtmuLmTZGvU4z+Ap22fH+sjzj+4eufr6VR1jSm1axNu0yoQ+9GCng9s8+hP5+1aSbUXy7nPRUHUSqO0epNp2rWmqxs9q5OzhlYYK+lXa89lmvPC919ngCiUqDJKVyJO+BnsPzzmus0nUJtUt3LqqEBCflOCGAJHXr1/Ag1jSrc3uy3O/GYD2S9rTd4P7zmNX1E6pqjfYb+cFMCGMKVUkD+Eg9SfUD0rrNH1JL638pn3XUCqs4x/ERz+uR+FY8HgxYL3z1vTtQ7owY+Qe2eecHH19q0NF0EaMsmy4Ekkh+ZmTHABwAM+prOlGqp3a3N8ZVwk6ChTldxtbT7+n9M2aKjCzcZkTtn5D+Pf8A/V70m2fH+sjzj+4eufr6V1niktFRlZucSJ3x8h/Dv/8Ar9qMS7vvpjI42npj6+tAElRTkCMZIHzr1fb/ABDv/Tv0oCz4GZI84XPyHrnnv3HT096ZMtx5fySLuz/Cn+0MdT0x17ntigCxRUZE27h0xk8bD0xx39aAs3GZE7Z+Q/j3/wA+9AElFRbZ8f6yPOP7h65+vpSlZucSR/xY+Q/h3/8A1+1AElFR4l3ffTbnptPTH19f896QLPgZkjJwucIeufm79x09PegCWiois+DiSPODj5D1zx39Pz9qUibJw6Yyf4D0xx39aAJKKjCzcZkTtn5D+Pf/AD70m2fH+sjzj+4eufr6UAS0VEVn5xJH/Fj5D+Hft39falxLu++mN3TaemOnX15/zmgCSiogs+BmSMnC5wh/4F379vT3oxPj76Hg/wAB9eO/pQAKR9qcZGdi8b89z/D2+vf8Kc0sayLG0iB2+6pYZP0FeRWPiXxc/iqFp7qIeZOFfTmljBVC33ducggH/eql4s8MeJrnxtcSxWtzcGaXfb3EQO1V/hG7ouOnOOldKw+tpSR1LDa2lJHT6h8V4LHxDNY/2az2kMxikm8zDcHBIXH14zz7V313Y2mo2/k3dvFcQtzskUMDXKS/DfSLrU01K5Mj3JIeaMH91JJ/ExHXk84ziuuKz4OJIxw2PkP/AAHv27+vtUVHDTkM6jp6ezGWtjaWVqLW1toYYBn91GgVeevFOtrS2sovKtbeKCPOdkSBRn1wKyPEHiiw8NLE2o3GDKxMcUcRZmUDB74HJzk/Srul6jHq+nw31lcxzQSAYYRkZIOG4J4/p71DUrXexDUrcz2ZoVn3Gu6XaXos5r6BbnvFvBYe5HUDvWK/jvSItcGkvdkTFjH5hgIj37sAZz+GenvXn9/4A8Rt4snmChYHuTML4yqAqls7jzkEemOo/GtKdJP43Y1p0U3+8djvZfh1oE2vHVmjmLNJ5rQbx5TPnOcYz15xnH4VxXxN0HWZ/En25YnnspI1SJlIxFgcqfTnJyeOa9bhQrFGsMkZhUKFwM/KB65qnqmj2+t2DWWopDPEdpwVIIYHqCGyOOP8elFOtKMk3qFOvKM03qYfgHX/AO1NPk01282bTY4o3nDblkyp6HvggjPfAPek8YeJ4YtE1G00fUYm1aJeY4mzIgDDfj3AznuME9q2tG8P2WgWz2+nRRwxuSznBLMf4cknsP8AIrzPTvhprtr4qhkd4xaQTrL9rEgy4BzwOu4/l71UfZym5N2Kh7KU3Ju1h3hfxm3hy/e11zU727EgAkVl8wW78fxFs8cggDr0zXq99Y2mq2ElpdwpPbTL8ynoR1B/rmvETYeG9V8XR28ur3e6eYLNKlsBHLITyVbeSoY+qnr6V7iscscYRHjUKu1RsOB6d/SniEk01uPEpJqS3KOjeHdK8Pwyx6ZaLAJTl23FmbHTJJJx/jWhbkG2iIIIKDkPvzx/e7/Wue8TeJDpVhdR2FzaT6qo/d2m4GTnH8OckgZOMc1zfw68Y6xr2o3FhqDpMEj85ZvLCkYIG3jA78fQ9e2fs5yi5sy9lOUXUZ6TVUabYLfG+WytxdkYM4iXef8AgWM1RtvEOm3eotp0GrWcl4uAY16kg/NjnnjsOlaZWfBxJGDhsZQ/8B79u/r7Vm00ZtSjuS0VHiXd99Mbum09MdOvrz/nNIFn4zJH/Dn5D+Pfv29PepJJaKi2z4/1kecf3D1z9fSlKzc4kTvj5D+Hf/PtQBJRUYE2Rl0xkfwHpjnv60gWfAzJHnAz8h6557+n5e9AEtXbT/VH/erNKz4OJIwcNjKHrn5e/YdfX2rQsg3lvuII3/LgYwMCk9gLNFFFSMKKKKACiiigAooooAKKKKACvOfEejW+nzXWo3+k+EFilmYo9xau00pYkjgDLOfQZya9GrzTULSxtdY1nxCfEWrrJZyeWZfskMyxszYEMBeM8gkKQvcjJzmgDc8B2d3BbXdxc+HdN0VJynlJaReXJIo3cyL268A88nIFdfXOeFLu4uPtiXl/qU1zGU322oW8MUkIIJBHlAAhvXJ+725ro6ACiiigCrZabYaasgsbK2tRI25xBEqbj6nA5NWqKKAMuiiirEFFFFMAooooAKKKKAIlH+kucD7i87Mdz/F3+nb8alqJcfapOmdi9znqe3SpaQBRRRTAKKKKACiiigAooooAKKKKAGvGksbJIiujDBVhkH8KZBbwW0eyCGOJM52ooUZ/CpaKVle4+Z2tfQKigGIzwB87dE29z2/r361LUVvjyzjH326En+I+tAiWiiimAVV1P7R/Zlz9kz9o8s7Mdc+3v6VaopNXVioS5ZKXY4Pw3Z3V3qLpeQPJajJlEwON3br/ABZ/TNdxFDFAmyJFRc5IA61JRWdKkqasdWLxksTO9rLsFFFFanGFFFFABRRRQAVFOMxjgH516pu7jt/Xt1qWorjHljOPvr1JH8Q9KQEtFFFMAooooAKKKKACiiigAooooAKKKKACuX8e67feH/D6XdggMjXCI7lc7F5J/PAH411FRzQxXMLwzxJLE4wyOoYMPcGnFpNNoqDSkm1c+fBpzzX02tJeqbCOcTSXIf8AeqS2QCv3t+ePTPfHNej+FfH0t3K0fiGSzs1mG+1YuFYgnowzwMYwTjPvXXDR9MNvNpwsLUWbIN0CpheSedo4H1HPHsK8z8R/DPVrnxE8mmCE2MxGxnkx5IAAwR1wMYGM8V1+0hV0nodvtadb3Z6Hr1FQWVubOxt7YyNIYYlj3t1bAxk1414n8XeJrXxpcxRXM8H2ecxwWyD5WX+HK/xbhg8+vFc9Ok6jaRzUqLqNpM2vitBo8l/Yvc300N6IivlRQ+ZlMnBOWXHO71z+Fbej2TaX8MZf+EeuTeXEkTzRzKhBZjwcLzggDAHqKTxb4CbxXc2uoLdi0uVhWOVHTeuOvGCORk/XjpXS6Do8Ph7QrbTo5S6QKd0jcbiSST7DJNaSqL2cUnt0NZVIqlGKd2uh494N0/UPE+sPZ6g9zPYr887ysW8tgQRgnoxxj1wT6V3vxO0vVdT0CBNNjkmSOXdNBEMswxwcdTg9vfPak8S/EKHTbcPoiW2pbT+/kWUFYuQBkDk5zjPTpzzWhaeJbjXPAt1rGm27JerFIFiHzlZFHbj5uxHHtVSlNyVS1kVOVRyjUtZGN8PdJ17TvCmpJMrW0s242cU4wUbafmIPQE44Pp71yvgfS/EkHjeGaW3vYQHY3kk6sFZcHIYn7xPbrzzVn4b6/r994q+zzXdzd2siM1wJnLiPAOCM9OcD8a6zx742ufC7WttYwRSXEwLs0wJVVHGMAjJP14/GrlzqbhZNyLlzqpKCSbkb3ifxBF4a0STUJYjKQwSOMHG9j2z27n8Kx/BfjlPFclxbS2gtriFQ+FfcrrnGenGOPzp+i3tr8QvBzjUrXaGcxSqhIAdcEMh/EfqOas+HPDmh+FZpLWyn3Xk4BbzpVMrKOgAGOPoKwtCMXGS9457QjBxkveMC1+FFlbeII74X7mzjlEqW3l88HIUtnpn26fnXofeuY8S+OtL8MXcVpdR3E07rvKQqPlXOASSR1wePatzTNSttX02C/tH3wTLuUnqOxB9wcipqOpJKUiajqSSlPY8jv/h14in8WzyRqPs8tyZReCVflBbdnGc5Hpjr+der2Gk2FlbSixtI7U3AzI0cexiTnk98jJ47VoHpUVvg20WMY2DGCSOnqeaJ1pTST6BUrymkn0PI9F+GmuWXie3lmeJLW2lWQTo+d4ByAB1+uffrXsNFFKpVlUd5Cq1ZVGnIKKKKgyCiiigAooooAKu2n+qP+9VKrtp/qj/vVL2AnoooqRhRRRQAUUUUAFFFFABRRRQAVw1loU+tXCsLyNdEttZuLv7O0J85pkmcFS27BTzAWHGcYFdzXK2ngLRP9Kl1LTbS6up7u4uGlKnJDys6g+4DAfhQBpaRpl7BqOoalqM0D3N35capADsjij3bRk8k5diT747VsVnaXoOlaJ5v9mWMNr52PM8tcbsZxn8z+daNABRRRQAUUUUAZdFFFWIKKKKYBRRRQAUUUUARqT9ocZONq8bvc9v8/pUlRgH7Q5wcbV5wMdT361JSAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFRwEmM5JPzN1bPc1JUcIIQ5BHzN1AHc+lICSiiimAUUUUAFFFFABVDU9c0nRvK/tTU7Oy80kR/aJ1j3464yeetX68N+MHw68T+I/FkOqaRbfbrd7dYtglRDCVJ4wxHBznI7k+1Jge4qyuoZWDKRkEHIIpawPBOjXnh/wZpelX8/nXVtDtds5C5JO0HuFBCj6Vv0AFFFFMAqOckRjBI+ZejY7ipKjmBKDAJ+ZegB7j1pASUUUUwCiiigAooooAKKKKACiiigAooooAKKKKAI1J+0OMnG1eN3ue3+f0qSowD9oc4ONq84GOp79akpAFRPbQSTpO8EbTIMLIUBZfoeoqWstvEejJqo0xtStxek7REX5z6Z6Z9utUk3sNJvYj17xLp+gWlxJcSq1xFD5ot1PzsMhR9AWIGa8+l+I7+IdL1GwmtEs0eBw0isXwp+X9Mgng5GcYOM3/FXgnWr3xbJqmnfZ7i3u1EcsU77Qo2hSD3I4ByOQfoK1tO+Gug6fbuZjPKXA87zJRtIGDt4A+XIB9eOuM10R9lGKb1Z1w9jCKb1ZyPhX4eaql7JdahDGLQQOETzQRc7lIUcdF5BycHp+GJoOseIDrhsTd3ccbB47iEFlWGPBDEIOEK9RgDkAe1et634nt7XwxqGo6PPbXstqoGIpA4QkgZOOwzn8K8j1i98Q+I5Le4he8vIXijBW3UkLIo+bcq8Bt2SPYitqcpVLuSN6U5VLuaNvwNb65J4oiur3Uc2dojyytJeK6lSpXPDHPJHPTjr0rvdZ8PaV4xjhuUuYJ0TgOh8xPfBVgQfxx0yDgY5fU/Al6fCEstu2NWuhBJeo7qAwVfmGen3jvJJ5K1k+Adb0vw1/azyX004WASFEhIRipx8pJzzuA5C9aiXv+/B6rsZzXPepB6rsdfc+LvDXgmaLQI4ZwIQN4hTcI93PzEnJPOeM1wd14T8SX/i1ru0jkkS5n+0wX6t8mwtlXz2wMcdeOKq3l7pnirV9Q1WS1nt7hITcNbCQSJNtUDGQFK9AT1yA2McVteFviRfWsU1rd2sUtpbWxaFIhs2bQMLnnjHHOTnFWoSgrxWvW5ooSpq8Fr1udd4u+H8Pii/ivlvmtZ1QRv+73hwM4OMjB5/lUsmuaB4E0OysFnaZFcwgREO24HLs3PGCwJHv0o0zxGvjbwrqS6aGtb8RNEUZ/uMynaQw7Hnnrwa4DQ/AGs6okum6jaS2EUDtIly4BAYgArtz84O1eQcDHvWUVdctR2S6GEI3XLVdkuhV0298Uz+OYXE109084LgMxjMZbn28vH4Y6V7pCcwRnJPyjktkn8e9ZHhfw5H4Z0cWEU8lwSxd5GGMk46DsOOla0AIt4wQQdoyCAD+Q6VlWqKb0WxlXqKb0Wx5l4h+KF/pfiWeytbK3a1tpNjiUNvcjrgg8e3B9a9LtbhbuzguUDBJo1kUMMEAjPNZGoeDdA1XUxqF5p6S3PG5tzAPjpuAOD+NboGBgdKU5QaXKtRVJU3FKKswooorMxCiiigAooooAKu2n+qP+9VKrtp/qj/AL1S9gJ6KKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGXRRRViCiiimAUUUUAFFFFAES4+1ScDOxf4Tnqe/T/PvUtRKR9qcZGdi8b8nqf4e317/hUtIAooopgFFFFABRRRQAUUUUAFFFFABRRRQAVFb4EZwAPnbopH8R9alqKAgxkgg/O3R938R7/wBO3SkBLRRRTAKKKKACiirAjULgjPvWVWrGmryGlcr0UrDaxHoaStBBRRRTAKKKKACorgAxjIBG9eqk/wAQ9Klrz/VLnWV8SSKklwJfNPkopOCueMDoRj/69ZVavs0nY7MHhHiZNKSVlc9Aoo579aK0OMKKKKYBRRRQAUUUUAFFFFABRRRQAU15EijaSR1RFGSzHAAp1UNasZNS0ma1icK74IJ6HBBwfyqZNpNounGMppSdl3JLO7tb2WSW1nilAVVJT7w5PX29Pxq3XL+F9EudNvJ5rpkRzHtESsGOCfvHH04/Gumkfy4nfBO1S2B1OKmlKUo3krM2xVKnTquNKXMh1eO6h8NdYk8UTTm5hSxluDKbtpQCoLZ6dd36Z71Y0L4n6tf+J7a2uLeA2d1MsQjjU7o9xwDuzzjIzn9Kv/FXRtZ1GSxmsoJ7q0jVlaKFSxVyfvEDk5HGe2D613U4zpT5W7XNKUJ0p8rdrmJ8R4NffxcHRLx7UBPsZhDFRwM4x/Fuz79Pau1mE/ib4cS2dvfxSah9nSO4dZBxIuCysRwM4Iz059KxY/CGu6j8NLXTZp/IvIpjMkMrEfu8EBGI6dSeenA47ZR+H2v6d4Mv443WS6uJonktYWzujQNxnoTlgcf7Pc8Vd4tJXV0y24NJXV0xnhLwtqmlW+r6lfyRWVp9gljEu9ZQxPfC5BAx+PTmjwL9obxZa+bf2Ecah5EhtAim4OxhyEA6Ak4bBHYda0fh/oN1BpGq2euB7S01FRDHBMwR2bBBKqeQenbnj0rEgh07wZr+pGynl1DUrGFzCXjCRxscA9CS5AY56Dg/hTfM5R3ZbfM5R3ZPY/ETV9W8QrZXiRNp19ILZ7YJjYjnbkN1yAe/6Vztzf8A9l6tc6fbWdu9mjNbmNoVLzJnGS+N2TwwwcA4xxV/TvFU9lbXWrzafp1zfzS+Wkz2wUqSCXJ24HIOPU5PPHN7Q9d0200ltauLUC6tJVghi8tZUyVJUqzfPxtPG/A/StLcu0TTl5NojdYa0+HuutbaXaC6mltx5r6h86hH6oqrtHQck59OOc1WvLC+uINOTSYLO11VUZXtSwlR9xUAliQU3rnGAMYPUV3uknw98SLX7Tf2KveWhCPy0ZAPI+63I69T69K1J9D8K+HrtdcuYobWSMBEkkkbauBgBVJxnA7CsfapaNPmMPbKPuyT5jz/AOHmvCw1kWdpa+XpsuTd3E5BZTg7SW4CjIwB7nk8VT8UXniceOZhFLeiUzE2SwMxVo/4doHBBGM++c1s+ONAGr2VlfeFbaG40/LmVLJB/rDj5io5Jxx04x71FLqviDwH4I0+zZBHd3U0rIZAG+zxjb8vpkkk89Mnj0tNN80d3pYtNN88Vq9LM1PilLraadp/kGZLYqTdeQTt34GMkc46+3T2rT8D3ur2ngK4vNTjuJng8yS3SXO94woIHPPJzjPb2xVLwx8R1urG0j1tNs89w1uk8agISApBYZ4+9g446V6BB/x7x9/lH8e7t6nr9a55twiqckc1SThBU5RPKfCHxB13VPFkFnetHNb3TFfLSIDyuCcqRzgY5znivWqzrPQdJ067e6s9OtoJ34aSOMA/h6fhWjWdWUZO8VYyrTjOV4qwUUUVmZBRRRQAUUUUAFXbT/VH/eqlV20/1R/3ql7AT0UUVIwooooAKKKKACiiigAooooAKKKKACorm5gs7aS5uZkhgiUs8kjYVQOpJPQVLRQBiReJdM1ZZbbQtX0y71Dyy0cYnDjjuwU5xzXNW1/qqeFpbefUpZL2fXW09rtflZUM+1ig52/KCAO2RXoFc83hZW0i8svtjLJNfvfwzrGMwyGXzF4JOcHA9xnpmgBNAMtnr2saObm4uLe3SCeFrmUyOgkDgrubkjMeRkn71dFWTo+kTafPeXl7eC7vrxl82VYvKUKowqquTgDJPJPJNa1AGP5ykgYfkgfcPf8ACk+0JjOJOgP+rbucelS0VYiIzoAeJONx4jbt17fl69qXzl3bcPndt+4fTP8Ak+vHWpKKAIhOhAOJOQp5jbv07fn6d6PtCAZxJ0J/1bdjj0qWigCMzKCRh+CR9w9hn0oEykgYfkgfcPcZ9KkooArLcKZmOJtuxSMocckj0zn1z7e9SGdACcScBjxG3br2/L17UKP9Jc4/gXnZ7nv3+nb8aloAj85d23D53bfuH0z/AJPrx1pBOhA4k52nmNu/Tt+fp3qWigCL7QmM4k6E/wCrbscelKZ0BIw/BI+4e34VJRQBGJlJAw/JA+4e4z6Un2hCAcScgH/Vt3OPSpaKAIjOgBJEnAY8Rt269vy9e1L5y7tuHzu2/cPpn/J/DrUlFAEQnQ44k52/8s279O35+nej7QmM4k6Z/wBW3rj0qWigCMzoM8Pxn+A9vw//AF0CZSQMPyQPuHuM+lSUUARC4QgHEnIB/wBW3c49P/1UyK4URsWExwXPKEnAbHYfl3I9asVFAMRnjHzt/Bt7nt/Xv1oAXzlDbcPnO37h9M/5P4UCdDjiTnH8Dd+nb/8AV3qSigCL7QmM4k6Z/wBW3rj0pTOgzw/Gf4D2/D/9dWhBxyeaiIwSD1FTGpGd1F7DsRCZS2MP1A+4e4z6VchbdCjc/MARkYIH0NV6lSbaoBXOPes68JTjaIIhndYXIbeflLcITx+HfnpTPOXdjD5yR9w+mfSpzukYtjP0phGDg1qr213ERidDjh+cfwHv07f/AKqT7QmM4k6Z/wBW3rj0qWnIu9wKbdldgQmdBnh+M/wHt17f/ro85d2MPnIH3D6Z9KttEu0kZBAzUFRTqRqK8RtWIhcIQDiTkKf9W3c4Hb8/TvTJrgCPIE3Bz8qHOAwB6j/65HSrFRTjMY4z86/wbu47f17dasQpmUNjD9SPuHsM+lAnQ44fnH8B7/h/+qpKKAIvtCYziTpn/Vt649KUzoM8Scbv4G7de3/6+1SUUAR+cpbbh852/cPpn/J/CkFwhAOJOQp5jbucDt+fp3qWigCI3CAE4k4BP+rbscen/wCulMygkYfgkfcPYZ9KkooAjE6HHD84/gPf8P8A9VJ9oTGcSdM/6tvXHpUtFAERnQZ4k43f8s27de35eval85d23D53bfuH0z/k/h1qSigCIToQCBJyFPMbd+nb8/TvR9oQAnEnAJ/1bdjj0qWp/JUDBzn1qKlWNP4hpXMm81O105Li6vJWhtolG53X5R16cZycge/AHOar6P4n0jX1kOm3XnGMgOvlsCuehII6e/SoPFegN4h0i805JRDKwRkkKHG5WJAJ7j+Wc1heA/At14YvLm+v7iJ5pI/KRISSoXIJJJA54FdEYwcG29TWMabptt6m9aeHdAsdTbU7XTFiu2Gd4jb5cnHC9FP0ArgPihqWt2+u262893b2PljyjEWQM+TuyRjJ4H4YI6165QRnqKIVXGXM9Qp1XGXNLU8j8VW/ifU/BGhmWC6ldA32yNEYsTwY2YdT8vX0J55rN0SHxCkcNjbC9jv/ALPcjYCymOMoPLD/AN3kPtzjBYHuK9urkPEHiG11bStS0nQNTik1fy8IkbfM2Dlgh6E7d3Q1tCs2uVI2p121yqJ5bpHhzX5Uvom0u98p4irI8TLukz8mM9w2CT2GfXnf8TaHFob2GpzR6ncagYF+1/ZztjVlUKzGQqevOeDnk59ZfhpZavpOrXl3fxz2OmJAfPa6BjQtkY+9jkc89ufWsLWLTXtW8YT3tgLi78y4JtbqDLRhM/LhxwABjPpzmt7t1LX0R08zdRq+iJtc1+G6tYf7M0Cwi0uZRJLEIOfMXIO5lwRjPGCOG9yBN4ov9Ih0vS9Gg0lrS1kt0vmeNi0iyOv+194AcHJGeORjlnjDT9X0nxElhpsF1DaDD2i2u7DsRuYjHVskj1AAHTFej3Ph6x1nw9ZXuv6d9q1C3swz7GKOzBclflIzznj1JxUucYqL6EynGCi+h5jeG48P+FNNudEub2KDUmdri5x5bsyHaqfKTtA+YgZ5yfTjYfSfEHjXwNp1xI7SXVtPIsQlJHnxkDDE9MgggE4z656s8J+OtVu/ENnpk8FvJp07CFbSOABYV7be+B1Oc8Zre+KesatpVtYRafNNbW8xfzJYTtO4Ywu4dO59/wAKJOSmo2V97hJzU1Gyvvc1Ph/oN14a0WaC/Y+fPKsnloCyoCABzjGeOfTitC/1TwvrFy+i3s9pdTKf+PdhkhhxgH+914HNVPh5qepat4VWfUyzuJWSKVhzIgA5PrzkZ9q4yw+GGs23imGV54jZQzrMLkSfMwDZ6dQ36e5rDlTnJzdmjn5U5yc5WaJfE/he10jWbS7824exVpDFAtuFjg2L5hBORu4BIGMtggt3rR8FfEJtS1ODRruGZjJuEVzJKHckDOGwoHQHn6fWvRbiCK5t5IJ41kikUq6MMggjBFcx4f8AAWi6HqA1O2W4efH7sTNxFkc4GM9Djkmj2sZQtPfoL20ZQaqb9DpvtCEA4k5AP+rbucelBnQAkiTgMeI27de35evapaK5jlI/OXdtw+d237h9M/5P4daQToccSc7f+Wbd+nb8/TvUtFAEX2hMZxJ0z/q29celKZ0GeH4z/Ae34f8A66kooAjEykgYfkgfcPcZ9KQXCEA4k5AP+rbucen/AOqpaKAIjcIATiTgMeI27HB7fl69q0LJg0bgZ+V8HII7D86qVdtP9Uf96k9gJ6KKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGXRRRViCiiimAUUUUAFFFFAES4+1SdM7F7nPU/hUtRqf9JcZ/gXjd7nt2+v+FSUgCiiimAUUUUAFFFFABRRRQAUUUUAFFOMbKMkcU2kmnsAVFb48s4x99uhJ/iPrUtRwHMZ5z87fxbu5/zjtQBJRRRTAmE/HK805UUjLDJPJqvT1kZRgdPeuedF2/d6MafcSRdrkDpTaUkk5PWkrdXtqIsREFAB1HUUycfOOO3WkhID8+nFTsoZSDXHJqlW5nsyt0VKVWKsCOopZE2NjsabXWmpK62JJWmJXAGM9arzyrbWktzJny4lLNjrgDtT6eyRXFq9vMAUdSrKTjINZz/dw9xFxs5Lm2Oc0nxVFql+LRrZoWYHYd+7OBnB4GOK27jHljOPvr1JH8Q9KzdP8NWGl3n2mFpZHAIUyEYXPpgVpznEY5x86/xbe4/zjvTpc/L7+50Yx4d1P9nVl+pJRRRWpyBRRRQAUUUUAFFFFABRRRQAUUUUAFSCZsdBn1qOiplCMviQEQObuTkZ2Lnk56n8KfJIkUbSSMFRAWZmOAAOppqn/SXGf4F43e57dvr/AIU26tory0mtZhuimjaNxnGQRg1SGjgtU+INrren3+meH2uk1JoyLdym3zQOW2YOQ20NjIBz71j/AAr/ALa/tu6877T9g8pvN83dt8zIxjP8XX8Pwra8P/C+PRfEEWpS6j9ojt23xRiLac9ixz29uv6V6DXTOpCMXCGqZ1TqU4RcKeqYyaPzoJItzLvUruU4IyMZFeUeH/hlrGn+KLa6uZ4FtLWYSiWN/mkxyAB2z0OffrXrVISFBLEADkk9qxhUlBNLqY06soJqPUwfGei3Ov8Ahi5sLSQLOxV1DHAfac7T/nqBXkureEPEdjotjEdNuChLmaKH94fM3HDHbn+HaB9D68+5Wt7a30ZktLmG4QHaWicMAfTIqcnAyelXTrSp6WLpV5U1y2PLNR0nxK3wosrQx3L3CzbpYFyZPJ+bapHU4+XjsMelaPwq0/V7HTr4ahDPBbO6+RFMpUg87iAeQD8v1xVqx+KGk32vppqW86xSyCKK5OMMxOBleoBPf8wK7iqqTmouMla+pVSpNRcJRtfUzrXQNIsr1721022huX6ypGAffHp+HWrk6wPH5dwI2RjjbIAQT9D1rxPxJ4m8T2vjS4jS6uYJIZtkNvHnay5+X5f4s9ec9a0viToniDUdbtrpLO4uLdoEVEgUuIm/iU46c9+/HpT9g21zS3H9Xba5pbnrygBQFACjoB0pa5DwHa6ta2k6aj5gQJEqiTu4B3Ee2Ngz0JUnnOT19c8o8rsc848srXuYni3WZtA8M3eo28SyTR7Qgb7oLMBk/TNcn8OfGeqa7qFxp2ohJQkJlSVUClcEDaccd+Pp3r0OeCK5geCeNJYnUq6OMhh6EGqOjaNpmk25OnWUNt5wDOY+S3/Au4q4ygoOLWpcZwVNxa1NKiiiszEKKKKACiiigAooooAKu2n+qP8AvVSq7af6o/71S9gJ6KKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGXRRRViCiiimAUUUUAFFFFAEYB+0OcHG1ecDHU9+tSVEoH2qQ4Gdi87Tnqe/Q/Tt+NS0gCiiimAUUUUAFFFFABRRRQAVNAo+936CoafEW34B69azqpuDSdhrcncgJn14xTPIXGMnPrTygZgxJ47U8EE5Irz1U5IpU36lWvuVTC6jJHAqCEEIcgj5m6gDufStAnBJJ/Gs+AAI20ADe3RSv8R9f5967aNV1L3VrEtWJKKKK3EFFWY1CoOOSOTUUwCycVjCtGcnFdBtEdS+Qcfe59KiBwc1P564zg59KKrqK3swVupBUiS7RgjIqPqaK0lFSVpCHO5ds02nGNgMkcU6OPeCT0FLmjCN+iGNVGYZApCCpwRzVnCqo7AetQSsGbjsMVlSrOpJ2WncGrDKjmBKDAJ+ZegB7j1qSorgAxjIB+deqlv4h6fz7VuIloop8QBkGaUnZXAZRVmQAxnPbpVaopVVUjzIbVgooorUQUUUUAFFFFABRRRQAUUUUARgH7Q5wcbV5wMdT361JUSgfapDgZ2LztOep79D9O341LSAKzb/AF/SdNs/tV3qECQ7tgYPuy3oAMkmqnjGwvtT8KX9ppxP2mRAFUNtLDcCy59xkV5RY+BfEGqaF5a2L28ltO7Klz+780MFBxnuNg68HPXit6VOMleTsdFKlCS5pSse1WWo2WpQLNZXUU8bLuBjYHjp/MEfhWP45tZr7whe21vPHFLJt2+ZIED4YErk8cgVyHg3wtrWl6/YrJE8dvZmZ7iY5VXLqAI1zywG1TnGM59AS34paJrOpanaXFpBLc2iR7FjjBYo5PJx78dP7tVGnFVUkyo0oqqkpEvwx8Na1pGpXd5fwPa2zw+WI3PMjbgQcewB5/2uK9OIBGD0rn/BOn32l+E7K01HIuEDfITkopYkLn2H+Hat8kKpJIAHJJrOtJym2Z15udRs8zfwh4T8N+Kbe5vNaEOJBNBZyEDac5BZv7uRxnHTqea9MBDAEEEHkEV494m8MS+K/FdxeaFqFjepNt8xROMw4ULkjuvHUflXq2k2R03R7KxaTzDbwJEXxjdtAGf0q62qTbuy6/wxbldlloYmkWRo0Mi/dcqMj6Gn0UVgcwUUUUAFRwAiCMEEHaMggA/kOKkPSorcAW0QAAGwYAUqOnoeR9KQEtFFFMAooooAKKKKACiiigAq7af6o/71Uqu2n+qP+9UvYCeiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFUtVv203TpLpLWW6kUqqQxD5nZmCgewyRk9hk1iv4tltEvoL/TPL1K2MCpbQziRZjMxSPa5C4+YEHI4xnmgDp6KydH1ebUJ7yzvLMWl9ZsvmxLL5qlWGVZWwMg4I5A5BrWoAy6KKM1YgoozRTAKKM0ZoAKKKKAIlI+1SDIzsXjeSep/h7fXv+FS1GCfPfltu0Y5GOp/H/P1qTNIAooozTAKKM0UAFFFGaACijNFABSqxVgRSZozSAlM5xwMUvn8fdGfrUNFZ+xp2tYd2BOTk1FbkGMkEH526OW/iPc/y7dKlzUcJOw7i2dzfeIPc+n+fWtBElSRIGyT0FR05JNh9Qe1TUUnF8u40Tu2xAQOOnNVySSSetSZM3oFFMdChGTwayo2j7src3UGNoqaAAg4+9mnyIHXj73r603XSnyMLaXIo494yTxSlPLZW6rmlgPLKfrTp8eX9DUOpJVuVvRjtoKXUDOQfxqKOXYCCMimKpc4UZoZShw3FVCjCCcO4m3uPkk38AYFR0qjcwA61I0JVcg5x7VpeELR2DVkVRXBAjBJA+derlf4h3H8u/Spc1HMSEG0tncv3SB3HrViJKKKM0wFLM3Uk/WkozRSAKKKM0wCijNFABRRRmgAoozRQAUUZozQBEpH2qQZGdi8byT1P8Pb69/wqWowT9ocZbG0Y5GO/wCP+R71JSAKKM0ZpgFFFGaACuW+IOrppHhOcvCZjdMLcLuKjkEnJHOMA9P0rqc1U1LTbPV7GSyv4Vmt3+8hJHTuCOQaqDSkmy4NKSbPKfhlaw6h4iN/bp9jezQ+bFEzMkqsCB94kgg89TnjpivYay9F8PaX4ehki0y2EIlILsWLM2OmSefw9zWpmqrTU5XRdeoqk7rYKKM0VmYhRRmjNAAelRW5BtoiCCCg5DlweP7x6/WpajhJMEe4tu2jO4gn8ccflSAkoozRmmAUUUZoAKKM0UAFFFGaACrtp/qj/vVSzV20/wBUf96pewE9FFFSMKKKKACiiigAooooAKKKKACiiigAqK5iae2kiSeSBnUgSxbdye43AjP1BqWigDl9RTUfDWm3GpRX+s63MqbIrJ4o3DMxADERRBsDqcds8VhxWbTaPJexRaje6vHfW1/evNYy25nCOMpEJFXIVd21Rn35NeiUUAc7oAlvNe1jWTa3Fvb3KQQQrcxGN3EYcltrcgZkwMgfdroqKKAMfyIQciJMggj5R26Un2eDGPJjxgDG0dAcj9ealoqxEZt4SDmJDncD8o53dfz70vkxbt3lpuzuzjvjGfy4p9FAEYt4QABCgACgfKONvT8u1J9ngIx5MeMEY2joTk/rUtFAEZghJJMSZJJPyjvwaBBCCCIkyCCPlHbgVJRQBXW3i85l8lNoRQB5fHBJ6/Xt2/GpDbwkEGFCCGB+Uc7uv596RcfapOmdi+uep/CpaAGeTFu3eWm7O7OO+MZ/LikFvCAMRIMbQPlHG3p+XapKKAIvs8GMeTHjBGNo6E5P680pghJJMSEnJPyjv1/OpKKAIxBECCIkyCDnaOoGB+lJ9ngAAEMeAAMbR0ByPyNS0UARm3hIIMMZBDA/KOd33vz70vkxbt3lpnO7OO+MZ/Lin0UARi3hGMRIMbcfKOMdPypPs0GMeTHjGMbR0zn+fNS0UARmCE5zEhznPyjv1/OgQRAgiJMgg52jqBgfpUlFAEQt4AABDHgAADaOgOR+RpkcETxtviQ5Lg5jxkFuePf9etWKit8eWcY++3TP94+tADvJiLbvLTOd2cd8Yz+XFCWsRxthTjGPlHGOn5U+p4mGzGQDUVZuEbpXGiOHZApjCBV64AximziObAZAwAI+YevWnzEFhjnAqOphCLaqNWYX6DUjSNw6IobIOQPbH8uKtrIhGc4PoarU4ITjg4PfFOpSjU+IE7CLHG1yHVFB55AwcE5P51YkiSbAdFbGcZHTjHFOUAHAAFJ5q9N3WuOdR1GnTT0KtbchgiSDIEapkAZAxkDoPwpLlYpQFZVf6jP+egqSVhsxkE5oiUbM4BJNaKyXt5LUXkQ28MSzbljUOMkEDnJ61YkbbGffgU4KBkjAJpko3YT+InNTzKpWi1sPZFNbaHhVhj6KANo7HI/I9KWbToni2iOI88gxgggsCR+J/XmrqJsXtnuRUdxOIVB43Egc9OTirdeUp8tMVu5V8iInJjTJJOdvcjBP5cUC3hGMRIMYx8o7dPyqSiuski+zQYx5MeMYxtHTOf580pt4TnMSHOc/KOc9fzqSigBnkxBt3lpnO7OO+MZ/Limi3gAAEMYACgfKOApyPy7VLRQBEbeAggwx4III2joTk/maUwREkmJMkk52jqRg/pUlFAEYghGMRIMYx8o7dPypPs0GMeTHjGMbR0zn+fNS0UARm3hOcxIc7s/KOc9fzpfJi3bvLTOd2cd8Yz+XFPooAjFvCAAIYwAFA+Ucbfu/l2pPs8BBBhjwQRjaOhOT+ZqWigCuLeI3UjGFMlQc+WOScg89+O3+NSCCEEERICMEfKO3T8qRcfapOmdi+uep/CpaAIvs8GMeTHjAGNo6A5H680pt4SDmJDncD8o53dfz71JRQAzyYt27y03Z3Zx3xjP5cUgt4QABCgACgfKONvT8u1SUUARfZ4CMeTHjBGNo6E5P60pghJJMSZJJPyjvwakooAjEEIIIiTIII+UduBSfZ4AMeTHjAGNo6A5H61LRQBGbeEggwoQQwPyjnd1/PvS+TFu3eWm7O7OO+MZ/Lin0UARi3hAGIkGNoHyjjb0/LtSfZ4MY8mPGCMbR0Jyf15qWigCMwQnJMSZOSflHfr+dMggiEMR8pA2FP+r28gYHHb+lTnpUVtj7NFjGNgxjOOnvzQAfZ4AABDHgADG0dAcj8jSm3hIIMMZBDA/KOd33vz71JRQAzyYt27y0zndnHfGM/lxSC3hGMRIMbcfKOMdPyqSigCL7NBjHkx4xjG0dM5/nzSmCE5zEhznPyjv1/OpKKAIxBECCIkyCDnaOoGB+lILeAAAQx4AAA2joDkfkalooAiNvAQQYYyCGB+Uchjk/n3rQskVY3KqAWfJwOpwKqVdtP9Uf96k9gJ6KKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGXRRRViCiiimAUUUUAFFFFAEan/SXGf4F43e57dvr/AIVJUYB+0OcNjavYY6nv1qSkAUUUUwCiiigAooooAKKKKACiiigAooooAKjgOYzzn52/i3dz/nHapQMkAdTUiWyopXcSck5wB1NZzqRhbmY0rkVFBGDipRCxXOQM9jVSko6tiIqsoihRwDn1FViCCQeoqaF8ZUn6ZrLERk4e6xoeY0J+7j6U/Bz7VHLJgYBG403zHC5KfjXL7KrUim2VdIYzuMrnjpSxxhhknj2oSLeNxOM04MYjtIyOoNdM5aONP4iV5jZYwgBUnB9akiXauc8kVGzmUhQMCpEEi4XAI9fSpqc7pqLaUhq1wMgVtrZJ7GmFyJAxUgYxyKlCru3Y59aRxlSO56VjCdNy0V76Njsxryjb8p5P6VWlV3UBAxbcpOGxxkZqZoiq5yDT4CMEDrmt04U6bdPUW71GLEW68fhTXQocdategNRTIWGQeBUUsQ5T10QNaEFFFFdhIUUUUAFFFFABRRRQAUUUUAFFFFAEan/SXGf4F43e57dvr/hUlRgH7Q5w2Nq9hjqe/WpKQBRRRTAKKKKACiiigAooooAKKKKACiiigAPSo7c5t4znOVHO7d29e/1qSo4MiCMEEHaM7gAfxA4pASUUUUwCiiigAooooAKKKKACrtp/qj/vVSq7af6o/wC9UvYCeiiipGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBl0UUVYgooopgFFFFABRRRQBEoH2qQ4Gdi87Tnqe/Q/Tt+NS1EpH2qQZGdi8byT1PboPr3/CpaQBRRRTAKKKKACiiigAooooAKKKKACphCMck5qGrEUm7gjkDrmsK7mo3gNWIOUf3BqRbpXQsFOckcgjocd6e8W4FlHP86hjtpEjIOM7icby3f1P8u3Slz0qiTkGqG1YEqkZJwe4qFkZeoptXUpxqrUE7Dnbc5NNopyxswyBxV6RQhFIDgnpmrePXp3qqF/eBW45qznjHTj8q5MVZuPcqJEsgTKHJweCKbnzZR2FSpwgx3oMahs4IPt2pe1pxnJ2s+4WYqqq5IGKcTtUkgiog7+bt496kbhST0xWUoSU48+txiblkyqntyR6U3YqHcueKiiJEg9+KsNypHTitan7qUYR2YLUjaVdpA5JFV2kMW1h/eA+6T1OO38+1WfKQDBHPrVO5wq4JAw6jJcr/EO4/l36VrQ9m04wE79S2Zx2H1zQ0q7TjOTUFFV9Xp6O2wrsKKKK3EFFFFABRRRQAUUUUAFFFFABRRRQBEoH2qQ4Gdi87Tnqe/Q/Tt+NS1EpH2qQZGdi8byT1PboPr3/AAqWkAUUUUwCiiigAooooAKKKKACiiigAooooAD0qK3AFtEAABsGAFKjp6HkfSpT0qK3INtEQQQUHIcsDx6nk/WkBLRRRTAKKKKACiiigAooooAKu2n+qP8AvVSq7af6o/71S9gJ6KKKkYUUUUAFFFFABRRRQAUUUUAFFFFABRRUVyZ1tpDapG84U+WsrlFLdgSASB+BoAZe3ttp1nLd3kyw28Qy7t0H+fSqMPiXSJtPur4XeyC1OJ/OjeN4zxgFGAYZyMcc54qnNqWo2cDXHiOx0uHTlZA0kFzJOVYuoUlWiUAAkEtnjGa5K9VrPVtSSe9+3wR6hpl1c3r7QUBkI8t9uFwu1W4AwGyfWgD0LTNXstYhklspi4jfy5FeNo3RsA4ZWAYHBB5Hertc5o7pN408RSwMrwiK0jZlOR5oEhYfXa0f6V0dAGXRUe2bIy6YyM/Ifx70m2fH+sjzgfwHrnnv6VYiWiois+DiSMfexlD+Hft39falxLu++m3d02npjp19efpx70ASUVEFnwMyRk4XOEP/AALv37envRtnx/rI84P8B6547+lAEtFRlZsnDpjJx8h9OO9AWbIy6YyM/IfTnvQADP2h+WxtGORjv+P+frUlVlWbzm+ZN2xct5XB5PfPp27VIVnwcSRg4bGUP/Ae/bv6+1AEtFR4l3ffTbu6bT0x06+vP0496QLPgZkjP3c4Q/j379vT3oAloqLbPj/WR5wf4D1zx39KUrNk4kTGTj5D+HegCSiowJsjLpjIz8h6Y57+tJtnwP3kecD+A9c89/SgCWiois+DiSMHDYyh/wCA9+3f19qXEu776Y3dNp6Y6dfXn/OaAJKKiCz8Zkj/AIc/Ifx79+3p70bZ8f6yPOP7h65+vpQBLT4gS/BxioCs3OJE74+Q/h3/AM+1OQzI4O9CMjI2HkY57+tKSbi0gL/UcUAYFQhpQcso2Y7dc1IGBUHkV5cqbh7zNLkUzDG3vmkSHcuS2M9OKmZVyflH5VGJAo2tnK8ZA610QqP2fLRWqJa11InUo2DU6OpQDIBAxgmq0vnTS/u2RRjADLnHv1pHhuFBIkjxz/AePTv/AJ9q3qRjOKhN2bEtNUSyHe4288Y4obzcbTnmi2SQFmdlIP3cDH1qwSFGCQM1lKrySUIxvZDtfUrBXB2jIzU6AhcEg4pruEx0Jz0p6sGXK5rOtOcoKTjoNJXGuQuHxzn86dwV6cEVBcrIxQowGTggjP8AWk2XaR4EsRIH/PM9c/X0ocE6cWpa+YX1JBAATknHbFNlLKdpbINNildQRIQ3JIIGMCm4mnn++gQHpt5246Zz1z3roj7RTbnsTpYeJmAxx9arzE7Bgtncv3SB3HrViSBtv7twCMZ3LnIzz+lVZI5gEMm0rvGR5RP8Qx37D/H2q6cqbV4A79SysbNzjA9TSOhT3BqznHzE8etVp3Z9ojIABycjORWVOrUnLayG0kNoqLbPj/WR5x/cPXP19KUrNziSP+LHyH8O/wD+v2rpJJKKjxLu++m3PTaemPr6/wCe9IFnwMyRk4XOEPXPzd+46envQBLRURWfBxJHnBx8h6547+n5+1KRNk4dMZP8B6Y47+tAElFRhZuMyJ2z8h/Hv/n3pNs+P9ZHnH9w9c/X0oAloqIrPziSP+LHyH8O/bv6+1LiXd99Mbum09MdOvrz/nNAElFRBZ8DMkZOFzhD/wAC79+3p70bZ8H95HnB/gPXPHf0oAUZ+0Py2NoxyMd/x/z9akquFm+1SEMgG0c+V25wM555/wA81IFmyMyJjIz8h/HvQBJRUW2fH+sjzgfwHrnnv6UFZ8HEkY+9jKH8O/bv6+1AEtFR4l3ffTbu6bT0x06+vP0496QLPgZkjJwucIf+Bd+/b096AJaKi2z4/wBZHnB/gPXPHf0pSs2Th0xk4+Q+nHegCSiows2Rl0xkZ+Q+nPek2z4/1kecD+A9c89/SgCWiois+DiSMHDYyh/4D37d/X2pcS7vvpt3dNp6Y6dfXn6ce9AElFRBZ8DMkZ+7nCH8e/ft6e9G2fH+sjzg/wAB6547+lAEtRwZMEe4sTtGdxBP444/KgrNzh0xzj5D+Heo4FlEMXzIFAX5fL2kDHIxnj+lAFiiots+B+8jzgfwHrnnv6UFZ8HEkYOGxlD/AMB79u/r7UAS0VHiXd99Mbum09MdOvrz/nNIFn4zJH/Dn5D+Pfv29PegCWiots+P9ZHnH9w9c/X0pSs3OJE74+Q/h3/z7UASUVGBNkZdMZH8B6Y57+tIFnwMyR5wM/Ieuee/p+XvQBLV20/1R/3qzSs+DiSMHDYyh65+Xv2HX19q0LIN5b7iCN/y4GMDApPYCzRRRUjCiiigAooooAKKKKACiiigAooooAKKKKAGyRpNE0UqK8bgqysMhgexFVrfS9PtLJ7K2sLWG1fO6COFVRs9cqBg5q3RQBBZ2Npp1uLeytYLaBTkRwRhFH4Dip6KKAMuiiirEFFFFMAooooAKKKKAIlx9qk6Z2L656n8KlqNT/pLjP8AAvG73Pbt9e/4VJSAKKKKYBRRRQAUUUUAFFFFABRRRQAUqnDAnsaSikBZLqBnIPtUVrN5qYOMgsMr04OO9R0y2cqpIOfmYfe3dz3/AKdq5vq0FBxRXMW5NwUlWP0qvUjy7lwBgd6jrSjGUY+/uJjo22Nk9KkeVSpA5JqGinKlGUlJ7oLk0cihACcYpkjb2yOnSgRORnFMpRpwU3KO4XYoBY4AyakUvD1HB96kRQqjAGSOTSTMoUr3Pas3W558iV11HayuRtKWYHHTtUqyoWA5yaIlAjB/Oo5UC/MOh7VL9lOXI1ZrYNVqSOAUOewqBHKNkVKib0BdmwegqKRNjYzkdquilG9NyuwfclWYFgMYz3Jpt0yCD95jBZcfXIx+tRVHOcRjnHzr/Ft7jv8A079KPq0OZSWlg5iSiiiukkKKKKACiiigAooooAKKKKACiiigAooooAiXH2qTpnYvrnqfwqWo1P8ApLjP8C8bvc9u317/AIVJSAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAB6VFbY+zRYxjYMYzjp781KelR25zbxHOcqOd27PHr3+tICSiiimAUUUUAFFFFABRRRQAVdtP8AVH/eqlV20/1R/wB6pewE9FFFSMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDLoooqxBRRRTAKKKKACiiigCMZ+0Pw2NoxwMd/x/z9akqJQPtUhwM7F52EHqe/Q/Tt+NS0gCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABUcOdhyGB3N94Adz6VJUVuAIzgAfO3RCv8R7H+ffrSAlooopgFFFFAFrep+bcMfWqzHc5I7mkorGnRjTba6jbuPWVlGAR+IphJJyetOWN2GVGRScg+4rRJX0ETxoyDqDntSAiXgjgdvWjzlxnBz6VErlWLDv1rmjCcrykrPoyroskqsecYA9KhDCSUZHHYU15GcYOAPamVdKjyq8vifUTZaYBkIPQD8qozZ2DAYncv3QD3HrUxkdhgsSKguADGMgH516oW/iHYfz7daqjTdONm7g3clooorYQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBGM/aH4bG0Y4GO/4/5+tSVEoH2qQ4Gdi87CD1Pfofp2/GpaQBRRRTAKKKKACiiigAooooAKKKKACiiigAqODIgj3BgdozuAB/HHH5VIelRW4AtogAAAg4CFQOPQ8j6UgJaKKKYBRRRQAUUUUAFFFFABV20/1R/wB6qVXbT/VH/eqXsBPRRRUjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAy6KKKsQUUUUwCiiigAooooAiUj7VIMjOxeNxz1PboPr3/AAqWowT9ocZbG1e4x1PbrUlIAooopgFFFFABRRRQAUUUUAFFFFABRRRQAVFbkGM4IPzt0Yt/Ee5/l26VLUcJJQ5LE7m6kHufSkBJRRRTAKKKKACiiigCyhBQY7DmoZWDSEj86ZRWMKKhNyT3G2FPiQOxz0AzTKVWKNkVpJNxaW4iaSNQhIGCKgp7ylxjAA9qZUUoyjG03djYVFcECMZIHzr1Yr/EO4/l36VLUcxIQYLA7l6EDuPWtBElFFFMAooooAKKKKACiiigAooooAKKKKACiiigCJSPtUgyM7F43HPU9ug+vf8ACpajBP2hxlsbV7jHU9utSUgCiiimAUUUUAFFFFABRRRQAUUUUAFFFFAAelRW5BtoiCCNgwQxYdPU8n61LUcGTBGSSTtGdxBP4kcUgJKKKKYBRRRQAUUUUAFFFFABV20/1R/3qpVdtP8AVH/eqXsBPRRRUjCiiigAooooAKKKKACiiigAooooAKiubmCztpLm5mSGCJSzySNhVA6kk9BUtFAHPS+NtAa3law1O01C5VR5dtbTq8kjEhVUAHuxAz2zXOWl9rC6Ld2l3qMjXtzr62T3EbEeUjbCyx5+6ANwHpnPWu61DTLHVrYW+oWcF1CGDiOaMOuR0OD35Nc7B4C0+zstQhsjFaTXF4t5DNBbqpgZCCi4/iAIPHGQxHFAFrw+0tprWsaO1zcXFva+TNA1xIZHVZFbKljyQChIzk810VZWjaRLp8t5dXl2Lu+vHVpZVi8tQFGFVVycADPUk5JrVoAx/OUkDD8kD7h7/hSfaExnEnQH/Vt3OPSr/wBj/wCmn6UfY/8App+lVdCKBnQA8ScbjxG3br2/L17UvnLu24fO7b9w+mf8n1461e+x/wDTT9KPsf8A00/SndAUBOhAOJOQp5jbv07fn6d6PtCAZxJ0J/1bdjj0q/8AY/8App+lH2P/AKafpRdAUTMoJGH4JH3D2GfSgTKSBh+SB9w9xn0q99j/AOmn6UfY/wDpp+lF0BmLMvnM+18FF/5ZHPUjr1/Dt1qQzoATiTgMeI27de35evarosAJWfeMkAfd9M+/vTvsf/TT9KVwKPnLu24fO7b9w+mf8n1460gnQgcSc7TzG3fp2/P071f+x/8ATT9KPsf/AE0/SndAUPtCYziToT/q27HHpSmdASMPwSPuHt+FXvsf/TT9KPsf/TT9KLgURMpIGH5IH3D3GfSk+0IQDiTkA/6tu5x6Vf8Asf8A00/Sj7H/ANNP0ougKBnQAkiTgMeI27de35eval85d23D53bfuH0z/k/h1q99j/6afpR9j/6afpRdAUBOhxxJzt/5Zt36dvz9O9H2hMZxJ0z/AKtvXHpV/wCx/wDTT9KPsf8A00/Si4FEzoM8Pxn+A9vw/wD10CZSQMPyQPuHuM+lXvsf/TT9KPsf/TT9KLoCgLhCAcScgH/Vt3OPT/8AVTI5VjjbKvwXbiIjo3oP8nrWl9j/AOmn6U2OwEakBx1J4X1OfWldAU/OUNtw+c7fuH0z/k/hQJ0OOJOcfwN36dv/ANXer32P/pp+lH2P/pp+lO6AofaExnEnTP8Aq29celKZ0GeH4z/Ae34f/rq99j/6afpR9j/6afpRdAURMpbGH6gfcPcZ9KQXCEA4k5AP+rbucDt/+rvV/wCx/wDTT9KPsf8A00/Si6AoG4QAnEnAY/6tuxwe35eval85d2MPnJH3D6Z9KvfY/wDpp+lH2P8A6afpRdAUROhxw/OP4D36dv8A9VJ9oTGcSdM/6tvXHpV/7H/00/Sj7H/00/Si4FEzoM8Pxn+A9uvb/wDXR5y7sYfOQPuH0z6Ve+x/9NP0o+x/9NP0ougKAuEIBxJyFP8Aq27nA7fn6d6jnmQxfdkOGz/qS3RgDxj/AD1Faf2P/pp+lNksBIoBcdQeV9Dn1pXApmZQ2MP1I+4ewz6UCdDjh+cfwHv+H/6qvfY/+mn6UfY/+mn6U7oCh9oTGcSdM/6tvXHpSmdBniTjd/A3br2//X2q99j/AOmn6UfY/wDpp+lFwKPnKW24fOdv3D6Z/wAn8KQXCEA4k5CnmNu5wO35+ner/wBj/wCmn6UfY/8App+lF0BQNwgBOJOAT/q27HHp/wDrpTMoJGH4JH3D2GfSr32P/pp+lH2P/pp+lFwKInQ44fnH8B7/AIf/AKqT7QmM4k6Z/wBW3rj0q/8AY/8App+lH2P/AKafpRcCgZ0GeJON3/LNu3Xt+Xr2pfOXdtw+d237h9M/5P4davfY/wDpp+lH2P8A6afpRdAUBOhAIEnIU8xt36dvz9O9H2hACcScAn/Vt2OPSr/2P/pp+lH2P/pp+lF0BmiVRdSfK/3QM+Ue2T17/wCfWpBOhIGH5IH3D3/CrgsAJWfeMkAfd9M+/vTvsf8A00/SldAUPtCYziToD/q27nHpQZ0APEnG48Rt269vy9e1X/sf/TT9KPsf/TT9Kd0BR85d23D53bfuH0z/AJPrx1pBOhAOJOQp5jbv07fn6d6v/Y/+mn6UfY/+mn6UXQFD7QgGcSdCf9W3Y49KUzKCRh+CR9w9hn0q99j/AOmn6UfY/wDpp+lFwKImUkDD8kD7h7jPpSfaEIziToD/AKtu5x6Vf+x/9NP0o+x/9NP0ouBQM6AE4k4DHiNu3Xt+Xr2pfOXdtw+d237h9M/5Prx1q99j/wCmn6UfY/8App+lF0BQE6EDiTnaeY279O35+nej7QmM4k6E/wCrbscelX/sf/TT9KPsf/TT9KLoCiZlGRh+Mj7h7fh/+uo4JVEMSbXBwo/1RXt6dv6VpfY/+mn6U2OwEcSIHHygDhf/AK9K4FL7QhAOJOQD/q27nHpQZ0AJIk4DHiNu3Xt+Xr2q/wDY/wDpp+lH2P8A6afpTugKPnLu24fO7b9w+mf8n8OtIJ0OOJOdv/LNu/Tt+fp3q/8AY/8App+lH2P/AKafpRdAUPtCYziTpn/Vt649KUzoM8Pxn+A9vw//AF1e+x/9NP0o+x/9NP0ouBREykgYfkgfcPcZ9KQXCEA4k5AP+rbucen/AOqr/wBj/wCmn6UfY/8App+lF0BQNwgBOJOAx4jbscHt+Xr2rQsmDRuBn5XwcgjsPzpPsf8A00/Spoo/KQrnPOaTYySiiipAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorCnuvFEUkjJpOlSwKSVC6hIJHUeimLG4jsWxnv3oA0hqlkdXOlC4U3yw/aDCAciPO3JPTrVXTvEmk6tdta2V2JZVUuB5bKHUHBZCQA4B4ypI5rgtPGpDxNcCfSL+LVb3SJ2nlcxY8wsMEbZCdi4VF79OOprX0u4trqbwKllIjGOzd3VCCUjEAU5Hb5yg+ooA7uiiigAooooAKKKKACiiigAooooAKKKrXzXqWjNp8NvNc5G1LiVo0IzzlgrHp7UAN1HU7PSbX7TezeXGWCLhSzMx6KqgEsT6AZqp/wk2j/2X/aP2v8A0fzfJ/1T+Z5mcbPLxv3f7OM+1ZmoardadbJeeINLsWljmUafFZ3DTySzsGUBQ0aYOCeewznFZUdjPpmq6Ff6rLD517qk1xc7G/dRSvbskaA+yqFz3J96AO00/ULTVLNLuymEsDkgMAQQQcEEHkEEEEHkVarnPCbLLJr80TBreXVZDEynIYBI1Yj/AIGr/jmujoAKKKKACiiigAooooAKKKKACiiigAqhqms2GjpE17MyGVisaJG0juQMnCqCTgck44q/XN38kdv4/wBLluXVIn065jiZzgeZviYj67QT9AaAN60uoL60iurWVJoJlDxyIchgehqaud8Ec+F43X/VSXN1JD6GNp5ChHsVII9sV0VABRRRQAUUUUAFFFFABRRRQAUUUUAFVNR1Sz0m2FxezeXGzhFAUuzseiqqglj7AVbrG8RajY6TbW95c2xurpZttlCgBd5mUqAuehwWyewzQA2TxdocdnFdG9JjlZ0VUhkaTK/eBjC7ht75Axxmta3uIbu2iubeVZYJUDxyIchlIyCDXC6HZyaN4zW61e4gW61GznuHKtiNJN8e5EJ9EWP67Sa3vA4I8H2LYwjmV4v+ubSMUx7bStAHQ0UUUAFFFFABRRRQAUUUUAFFFFABRRRQBUvdTstOktY7u4WJ7uYQQKQSXc9AMfTr0qrD4k0m41U6ZFdhroMyBfLYKzL95VcjazDuASRg1xPiWbUP+EjtL680O/fydUhhsmRoShiGSduZAd7nnkAYVRnjmWwljbw54XsldTfx6wRJGD86ujyGUkdRxuz9fegD0aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAI/s8P2kXPkx+eE8sS7Ru25ztz1xnnFQ22mWFlPNPa2NtBNOcyyRRKrSH1YgZP41aooAKKKKACiiigAooooAKKKKACiiigAooooAqahpWnatEkWo2FreRodyrcQrIFPqAwODUMWgaNBYS2EOk2EdnK26S3S2QRueOSoGCeB+VaNFAEcFvDawJBbwxwwoNqRxqFVR6ADgVJRRQAUUUUAFFFFABRRRQAUUUUAFFFNkVnidFkaNmUgOoBKn1Gcj86AHVWvdPstSg8i/s7e6hyG8ueMOuR3wR1rlbSLXD4i1Wz/4SPUJ47CGCaOMw2y+aX3kqxEXQ7AOMHk1T8OeIrrU72xUeI4pdQYj7fpF3AsDQ/KdwjG0OSp9SwIzyKAO+RFjRURQqKMKqjAA9BS15/ovizU5LHWYNSkUXQW8n02cIoDxxSOhXGMFkKg+4Ye9J/b8s2rQwaj4tGjRHSrS5UZtk82R/M3n96h/urwOBmgD0GiuS13U9T07wNPe6JeR6pJHbTTf2jM8e1VVWbcAihWPG0ADHHPfPUWrtJaQu5yzIpJ98UAS0UUUAFFFFABRRRQAUUUUAFU9Q0nTdWjSPUtPtbxEO5FuYVkCn1AYHFXKKAMxfDehJZfY10XTltfM83yBaoE34xu24xnAAz7VpKoVQqgBQMADoKWigAooooAKKKKACiiigAooooAKKKKACiiigCOa3huPL86GOTy3Eib1B2sOjDPQj1qGPTLCK/kv47G2S8kG17hYlEjD0LYyatUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBipo9wNb1q888RR39tDDE8RPmRlBIC3TA++MdelZbaDrepTaXHq/9lsunzxzi+hLmeUocjClQE3Y+b5m4JFddRQBxd54Lubvwa+mi4ih1OK4ubi1uEJ2oZJZG2k4zgo+1hjueuBUkGh65pmppc2lrpd2h022tHFxdPEVeLfkjETZB3+3SuwooAxdQsdQ1bwhqOnTxWlte3dpNAqxTM8SllKqdxRTjkZ+X861reMxW0UbYJRApx7CpKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2Q==",
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig, ax = plt.subplots(figsize=(8,6)) # Set figsize\n",
        "sns.set_style('darkgrid', {\"grid.color\": \".6\", \"grid.linestyle\": \":\"})\n",
        "sns.scatterplot(data=df_tsne, x='TSNE1', y='TSNE2', hue='Cluster', palette='magma')\n",
        "sns.move_legend(ax, \"upper left\", bbox_to_anchor=(1, 1))\n",
        "plt.title('Scatter plot of news using KMeans Clustering')\n",
        "plt.xlabel('TSNE1')\n",
        "plt.ylabel('TSNE2')\n",
        "plt.axis('equal')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 21,
      "metadata": {
        "id": "tuAx8ZI3ydcT"
      },
      "outputs": [],
      "source": [
        "def get_majority_cluster_per_group(df_tsne_cluster, class_names):\n",
        "  class_clusters = dict()\n",
        "  for c in class_names:\n",
        "    # Get rows of dataframe that are equal to c\n",
        "    rows = df_tsne_cluster.loc[df_tsne_cluster['Class Name'] == c]\n",
        "    # Get majority value in Cluster column of the rows selected\n",
        "    cluster = rows.Cluster.mode().values[0]\n",
        "    # Populate mapping dictionary\n",
        "    class_clusters[c] = cluster\n",
        "  return class_clusters"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 22,
      "metadata": {
        "id": "Is_GUvFS0GH_"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{'sci.crypt': np.int32(1),\n",
              " 'sci.electronics': np.int32(0),\n",
              " 'sci.med': np.int32(3),\n",
              " 'sci.space': np.int32(2)}"
            ]
          },
          "execution_count": 22,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "classes = df_tsne['Class Name'].unique()\n",
        "class_clusters = get_majority_cluster_per_group(df_tsne, classes)\n",
        "class_clusters"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "R_bf9nXc6Dgx"
      },
      "source": [
        "Get the majority of clusters per group, and see how many of the actual members of that group are in that cluster."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 23,
      "metadata": {
        "id": "b2GyHE8ahEff"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "Class Name\n",
              "sci.space          0.993333\n",
              "sci.med            0.986667\n",
              "sci.crypt          0.973333\n",
              "sci.electronics    0.960000\n",
              "Name: count, dtype: float64"
            ]
          },
          "execution_count": 23,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Convert the Cluster column to use the class name\n",
        "class_by_id = {v: k for k, v in class_clusters.items()}\n",
        "df_tsne['Predicted'] = df_tsne['Cluster'].map(class_by_id.__getitem__)\n",
        "\n",
        "# Filter to the correctly matched rows\n",
        "correct = df_tsne[df_tsne['Class Name'] == df_tsne['Predicted']]\n",
        "\n",
        "# Summarise, as a percentage\n",
        "acc = correct['Class Name'].value_counts() / SAMPLE_SIZE\n",
        "acc"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 24,
      "metadata": {
        "id": "gF0wwWQK9Yek"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>TSNE1</th>\n",
              "      <th>TSNE2</th>\n",
              "      <th>Class Name</th>\n",
              "      <th>Cluster</th>\n",
              "      <th>Predicted</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>40.186756</td>\n",
              "      <td>-0.446112</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>35.983940</td>\n",
              "      <td>0.442592</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>29.899532</td>\n",
              "      <td>-9.017360</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>33.353500</td>\n",
              "      <td>5.954631</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>24.770006</td>\n",
              "      <td>-8.209906</td>\n",
              "      <td>sci.crypt</td>\n",
              "      <td>1</td>\n",
              "      <td>sci.crypt</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>595</th>\n",
              "      <td>-23.769527</td>\n",
              "      <td>14.458261</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>596</th>\n",
              "      <td>-29.530485</td>\n",
              "      <td>16.145725</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>597</th>\n",
              "      <td>-14.785336</td>\n",
              "      <td>11.442585</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>598</th>\n",
              "      <td>-22.677313</td>\n",
              "      <td>-0.399542</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>599</th>\n",
              "      <td>-15.382431</td>\n",
              "      <td>4.611829</td>\n",
              "      <td>sci.space</td>\n",
              "      <td>2</td>\n",
              "      <td>sci.space</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>600 rows × 5 columns</p>\n",
              "</div>"
            ],
            "text/plain": [
              "         TSNE1      TSNE2 Class Name  Cluster  Predicted\n",
              "0    40.186756  -0.446112  sci.crypt        1  sci.crypt\n",
              "1    35.983940   0.442592  sci.crypt        1  sci.crypt\n",
              "2    29.899532  -9.017360  sci.crypt        1  sci.crypt\n",
              "3    33.353500   5.954631  sci.crypt        1  sci.crypt\n",
              "4    24.770006  -8.209906  sci.crypt        1  sci.crypt\n",
              "..         ...        ...        ...      ...        ...\n",
              "595 -23.769527  14.458261  sci.space        2  sci.space\n",
              "596 -29.530485  16.145725  sci.space        2  sci.space\n",
              "597 -14.785336  11.442585  sci.space        2  sci.space\n",
              "598 -22.677313  -0.399542  sci.space        2  sci.space\n",
              "599 -15.382431   4.611829  sci.space        2  sci.space\n",
              "\n",
              "[600 rows x 5 columns]"
            ]
          },
          "execution_count": 24,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Get predicted values by name\n",
        "df_tsne['Predicted'] = ''\n",
        "for idx, rows in df_tsne.iterrows():\n",
        "  cluster = rows['Cluster']\n",
        "  # Get key from mapping based on cluster value\n",
        "  key = list(class_clusters.keys())[list(class_clusters.values()).index(cluster)]\n",
        "  df_tsne.at[idx, 'Predicted'] = key\n",
        "\n",
        "df_tsne"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DWBhCLr0OTrQ"
      },
      "source": [
        "To better visualize the performance of the KMeans applied to your data, you can use a [confusion matrix](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html). The confusion matrix allows you to assess the performance of the classification model beyond accuracy. You can see what misclassified points get classified as. You will need the actual values and the predicted values, which you have gathered in the dataframe above."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 25,
      "metadata": {
        "id": "CwqggsKD-ywF"
      },
      "outputs": [
        {
          "data": {
            "image/jpeg": "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NAFjTNXfVdWIOnarZeRCwZbgRiMklSMhWY7sdOgwW9q3K4bwxqi674xur820VjIto0LRoWY3W2QAyb9qq4QrtBUt948jiu5oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4bxetzqFtMl/ojQ2sXmRJerqscBMb/Kw5GMMMZU57dxWl4PtZIFvXntJUndlV7ia+W5eUrkbSVAChfTA+8feofHWgX2tWSmyt4Lt0trmAW8z7QGlQKsqkgjcuD1xwx5qz4asbqDUtTvru2t7KS7WHNnFKHI2hh5jkADc2ccdkHJoA6SiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArN1nSBq9vCq3c1pPbyiaC4hClkfay5wwIPysw5HetKigDE0jwza6PcW8sM87rbWgtLeNyMRpkFzwMlmKqST6cYrboooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA57WL/V7S4sLS1udPW6upZVVJLWWTKA5U/Kw27VI3MeMkYxnFHhy8u7rUNTTUWsTeQMkT/Z7R4X2jcQSXY7kOSVI4+9VHxncC1vtOniuJbS6ggup/tSFSI4EVTICrAh8ny8Dg8ZzxyzwPJeyXmovrAZtWkhtppX8wMBEwfy0wEUKVIfIwfvZyc0AdlRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFLUdI07V0iTUbG3u1ifegmjDbW9Rmsptd8P6PqV/bJFOl0JBJdtbafNIN7KCC7ohGdpHfpXRVxdrDrU3i3xONMvrG2j8+AObi0aZs/Z05GJFH5g0AddaXdvf2kV3azJNbzKHjkQ5DA9CKmrg7XR5NK1+30q3vr6S307SFuEhSdo1mm81juZVIzk5G3oQcc4FZOi6prqRabqC3cU017ZzTPE2pPcG4cRFvlh8sLEVcAEAgAZHJxQB6PdalaWdzDbzyMJpkkeNFjZiwQAtjAPQEcdT2qzHIssSSLu2uoYblKnB9QeR9DXlrskcmi30Gt3V5dXGj3lw5kuS5D+Up3qP+WfORgYHHTir0F2b2O8m1TX7zTxYafaywPHOVwGiDNKy/8ALUlsrg5ztxjJoA9AguoLl5lhlWRoJPKlCnOx8A4Pvgj86mryyV7jT/7VGnzzBr3xELedpL6SILGYQ4wx3GMs2F3AZwQM8DFqC81HfBpV5qZisZNW+zyS29+8skK+QXEJnKqclwOeoDbc5oA9Btb+2vXuUt5N7W0xgmG0ja4AbHPXhhyOOaLG/ttStBdWknmQlmQNtI5VircHnggiub8CpHGmvxxXb3UaavIqzO+9jiOMYLdyOmepxXN2Ny0ul6fp8Ut3v/064aOK++xxhRcsN7yj5uOflGRySe1AHpBv7YakNPMn+lGEziPafuAhSc9OpHHWrFeVaJKuu32hS6nrFxA76LKTLDdGJpdswGS4wTgDJ6Zxk96dFqut6uNOhmuD5Y0oXIlOpNYmU+Y6mUlUbd8qo2DgDfnBzwAelrf2zalJp4kzdRwrO0e08IxZVOenVG468VYrifCtxc3fiMXF3NFPcSaBZs80QO2Q+bP8wyB169B1rtqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACo47eGKWWWOGNJJiDI6qAXIGASe/AA59KkooAj+zw/aTc+TH55TyzLtG7bnO3PXGecVBb6Vp1ndy3VtYWsFzN/rZooVV3/3iBk/jVuigChHoWkRSySx6VYpJLu8x1t0BfcMNk45yOvrTpdH0yeS3km060ke2AEDPApMQHTaSPl/CrtFAFOTSdNme5eXT7R2ulC3BaFSZgOgfj5gO2aBpGmjTjpw060FieDbeSvl9c/dxirlFAEFpY2lhEYrO1gtoydxSGMICcAZwPYAfgKrzaHpFzFFFPpVjLHCzPGj26MEZjkkAjgk8k1fooAzpfD+jTxrHNpFhJGmdqvbIQMtuOAR6kn6nNS3mladqMcUd7p9rcpEcxrPCrhD7AjirlFAES20CXBnWCNZigjMgQBigJIXPXAJOB7mpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9k=",
            "text/plain": [
              "<Figure size 640x480 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "cm = confusion_matrix(df_tsne['Class Name'].to_list(), df_tsne['Predicted'].to_list())\n",
        "disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n",
        "                              display_labels=classes)\n",
        "disp.plot(xticks_rotation='vertical')\n",
        "plt.title('Confusion Matrix for Actual and Clustered Newsgroups');\n",
        "plt.grid(False)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yCXlOrLFrE1k"
      },
      "source": [
        "## Next steps\n",
        "\n",
        "You've now created your own visualization of embeddings with clustering! Try using your own textual data to visualize them as embeddings. You can perform dimensionality reduction in order to complete the visualization step. Note that TSNE is good at clustering inputs, but can take a longer time to converge or might get stuck at local minima. \n",
        "\n",
        "There are other clustering algorithms outside of KMeans as well, such as [density-based spatial clustering (DBSCAN)](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html).\n",
        "\n",
        "To learn how to use other services in the Gemini API, see the [Get started](../quickstarts/Get_started.ipynb) guide."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "name": "clustering_with_embeddings.ipynb",
      "toc_visible": true
    },
    "google": {
      "image_path": "/examples/clustering_with_embeddings_files/output_z4N7d8MlpVCS_1.png",
      "keywords": [
        "examples",
        "googleai",
        "samplecode",
        "python",
        "embed"
      ]
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
